Unix以下有五种I/O模型
注意两个概念:
用户进程缓冲区、内核缓冲区
一个输入操作包括两个阶段:
(1)等待数据准备好
(2)从内核向进程复制数据
一、阻塞式I/O
最流行的I/O模型,默认模式。等待数据准备好,然后执行。如recvfrom
二、非阻塞I/O
不等待数据准备好,程序继续执行,通常采用轮询方式。
三、IO复用(select and poll)
程序阻塞在select或poll系统调用上而不是阻塞在真正的IO系统调用上。
他的优势是,可以等待多个描述符就绪。
四、信号驱动式I/O(SIGIO)
这种模型的优势在于等待数据包到达期间,进程不阻塞。
五、异步I/O(Unix 的aio_系列调用)
POSIX规范定义。
POSIX术语定义:
同步I/O操作(synchronous I/O operation)导致请求进程阻塞,直到I/O操作完成
异步I/O操作(asynchronous I/O operation)不导致请求进程阻塞
注意两个概念:
用户进程缓冲区、内核缓冲区
一个输入操作包括两个阶段:
(1)等待数据准备好
(2)从内核向进程复制数据
一、阻塞式I/O
最流行的I/O模型,默认模式。等待数据准备好,然后执行。如recvfrom
二、非阻塞I/O
不等待数据准备好,程序继续执行,通常采用轮询方式。
三、IO复用(select and poll)
程序阻塞在select或poll系统调用上而不是阻塞在真正的IO系统调用上。
他的优势是,可以等待多个描述符就绪。
四、信号驱动式I/O(SIGIO)
这种模型的优势在于等待数据包到达期间,进程不阻塞。
五、异步I/O(Unix 的aio_系列调用)
POSIX规范定义。
POSIX术语定义:
同步I/O操作(synchronous I/O operation)导致请求进程阻塞,直到I/O操作完成
异步I/O操作(asynchronous I/O operation)不导致请求进程阻塞