五种基本的I/O模型
同步I/O:
1.阻塞I/O
2.非阻塞I/O(轮询I/O)
3.I/O复用
4.信号驱动I/O
异步I/O
1.异步I/O
一个输入操作包括两个阶段:
1.数据从网络中到达本地,拷贝到内核缓冲区
2.数据从内核缓冲区拷贝到进程缓冲区
1.阻塞I/O
整个程序阻塞在recvfrom上
2.非阻塞I/O(轮询)
不停检测是否有数据准备好.
3.I/O复用
例如使用select函数,程序可以同时检测多个描述字,当其中一个满足条件时候返回.
当仅有一个描述字时候相当于阻塞I/O.
4.信号驱动I/O
开启信号驱动I/O功能,安装信号,程序继续执行直到有信号准备好.
5.异步I/O
程序告知内核某个动作,当动作执行好了以后告诉我.
同步I/O:
1.阻塞I/O
2.非阻塞I/O(轮询I/O)
3.I/O复用
4.信号驱动I/O
异步I/O
1.异步I/O
一个输入操作包括两个阶段:
1.数据从网络中到达本地,拷贝到内核缓冲区
2.数据从内核缓冲区拷贝到进程缓冲区
1.阻塞I/O
整个程序阻塞在recvfrom上
2.非阻塞I/O(轮询)
不停检测是否有数据准备好.
3.I/O复用
例如使用select函数,程序可以同时检测多个描述字,当其中一个满足条件时候返回.
当仅有一个描述字时候相当于阻塞I/O.
4.信号驱动I/O
开启信号驱动I/O功能,安装信号,程序继续执行直到有信号准备好.
5.异步I/O
程序告知内核某个动作,当动作执行好了以后告诉我.