linux的5种IO模型
一、这里IO是什么
操作系统设有用户态与内核态,确保系统安全。应用程序默认在用户态运行,而执行如IO操作等底层任务时,需切换至内核态以高效执行。
服务器从网络接收的大致流程如下:
1、数据通过计算机网络来到了网卡
2、把网卡的数据读取到 socket 缓冲区
3、把 socket 缓冲区读取到用户缓冲区,之后应用程序就可以使用
核心就是两次读取操作,五大 IO 模型的不同之处也就在于这两个读取操作怎么交互
二、同步/异步和阻塞/非阻塞
- 同步与异步:这是应用层的关键概念。同步指调用函数后需等待其执行完毕再继续,而异步则允许立即执行后续操作,并在另一线程中处理被调用的函数。重点在于线程间的协作与消息通信机制。同步IO涉及发出调用后亲自等待结果,而异步IO则在整个过程中无需参与,直至数据准备就绪。
- 阻塞与非阻塞:在硬件层面,阻塞指CPU暂停当前任务处理其他进程,如IO操作