文档详情

第四讲I-O复用与套接口选项.ppt

发布:2017-06-09约3.16万字共91页下载文档
文本预览下载声明
Lecture 4 I/O multiplexing and Socket options Ren Liyong 电子科技大学计算机学院 Contens I/O Models I/O multiplexing concept Select and pselect functions Socket options Nonblocking IO Signal-driven IO I/O Models Five I/O models under UNIX Blocking I/O Nonblocking I/O I/O multiplexing(select and poll) Signal driven I/O(SIGIO)and Asynchronous I/O(posix.1 aio_ funcitons) There are two distinct phases for an input operation: Waiting for the data to be ready, and Copying the data from the kernel to the process Blocking I/O Model The most prevalent I/O model 。By default, all sockets are blocking Nonblocking I/O Model When a socket is nonblocking, telling kernel: “ when an I/O operation that I request cannot be completed without putting the process th sleep, do not put the process to sleep”. It is called polling, waste of CPU time. I/O multiplexing Model When I/O multiplexing, we call select or poll and block in one of these two system call, instead of blocking in the actual I/O system call. Signal Driven I/O Model Telling the kernel to notify us with the SIGIO signal when the descriptor is ready. Advantage: process is not blocked while waiting for the datagram to arrive. Asynchronous I/O Model Asynchronous I/O tell the kernel to start the operation and to notify us when the entire operation is complete. Comparison of the I/O Model 同步i/o与异步i/o Posix定义这两个术语如下: 同步i/o操作引起请求进程阻塞,知道i/o操作完成; 异步i/o操作不引起请求进程阻塞; 上述i/o模型中,前四个模型:阻塞i/o模型、非阻塞i/o模型、i/o复用模型和信号驱动模型都是同步i/o模型,因为真正的i/o操作(recvfrom)阻塞进程,只有异步i/o模型与此异步i/o定义相匹配。 I/O Multiplexing What we need is the capability to tell the kernel that we want to be notified if one or more I/O conditions are ready (i.e., input is ready to be read, or the descriptor is capable of taking more output). This capability is called I/O multiplexing and is provided by the select and poll functions. Scenarios of I/O multiplexing When a client is handling multiple descriptors (normally interactive input and a network socket). If a TCP server ha
显示全部
相似文档