《UNIX网络编程第六章笔记》
1、liunx下可用的5种I/O模型:阻塞式I/O、非阻塞式I/O、I/O复用、信号驱动I/O、异步I/O
1.1、阻塞式I/O
默认情形下,所有套接字都是阻塞的,以数据报套接字为例,如图所示:
1.2、非阻塞式I/O
当一个应用进程像这样对一个非阻塞描述符循环调用recvfrom时,称之为轮询。应用进程持续轮询内核,以查看某个操作是否就绪。这么做往往消耗大量CPU时间,不过这种模型偶尔也会遇到,通常在专门提供某一种功能的系统中才有。
1.3、I/O复用模型图
使用select需要使用2个而不是单个系统调用,I/O复用还稍有劣势。不过select的优势在于可以等待多个描述符就绪,且可以继续超时等待操作。
1.4、信号驱动式I/O模型
这种模型的优势在于等待数据包到达期间