6 IO复用与套接字选项(10,11)new.ppt

目录 I/O模型 I/O复用概述 Select函数 套接字选项和fcntl 非阻塞I/O 信号驱动I/O模型 I/O模型 linux下可用的i/o模型 阻塞i/o 非阻塞i/o i/o复用(select和poll) 信号驱动i/o(SIGIO) 异步i/o(posix.1的aio_系列函数) 举例:输入操作的不同i/o模型 一个输入操作一般有两个阶段 等待数据准备好 从内核到进程拷贝数据 阻塞I/O模型 最流行的i/o模型。缺省时,所有套接字都是阻塞的。 非阻塞I/O模型 当把一个套接字设置成非阻塞方式时,即通知内核:当请求的i/o操作不能马上完成时,不要阻塞进程,而应返回一个错误。 I/O复用模型 i/o复用模型调用select或poll,进程阻塞于这两个系统调用上,而不是阻塞于真正的i/o系统调用上。 信号驱动I/O模型 让内核在描述字准备好时用信号SIGIO通知进程。这种模型的好处是当等待数据报到达时,可以不阻塞。前提是允许套接口进行信号驱动i/o 。 异步I/O模型 异步i/o让内核启动操作,并在整个操作完成后(包括将数据从内核拷贝到应用进程的缓冲)通知我们。 五个I/O模型的比较 fcntl函数 fcntl()是标准系统调用,原意是用于对文件描述字进行各种控制操作,但后来可利用它对任何描述字进行控制操作,包括对套接字描述字。 #include fcntl

文档评论(0)

1亿VIP精品文档

相关文档