I/O 复用

处理多个描述符、处理多个套接字的情况,不能阻塞在一个IO下,内核一旦发现任一个IO条件就绪就通知进程。

IO模型

阻塞式IO模型

默认系统调用都是阻塞的,只有当数据到达并复制到应用程序的缓冲区中或发生错误才会返回。

非阻塞式IO模型

当所请求的IO操作不能立即完成,进程需要被睡眠时,不睡眠而返回一个错误EWOULDBLOCK。(所以进程得轮询pooling来操作)

IO复用

阻塞在多个上。

信号驱动

开启套接字的信号驱动功能,并通过signal安装一个信号处理函数,当数据准备好后,内核会为该进程产生一个SIGIO信号。

异步IO

告知内核启动某个操作,并在完成后再通知我们,相比信号驱动,内核是在完成后通知我们,而信号驱动是通知我们什么时候可以启动一个IO操作。

select

你可能感兴趣的:(I/O 复用)