个人技术分享

 cf05fcc29e641c880c0d55436dcd0c50.jpeg

linux的5种IO模型

   

一、这里IO是什么

操作系统设有用户态与内核态,确保系统安全。应用程序默认在用户态运行,而执行如IO操作等底层任务时,需切换至内核态以高效执行。

47d75b20e2b2d89c6e7833cac4b34da6.jpeg

服务器从网络接收的大致流程如下:

1、数据通过计算机网络来到了网卡

2、把网卡的数据读取到 socket 缓冲区

3、把 socket 缓冲区读取到用户缓冲区,之后应用程序就可以使用

核心就是两次读取操作,五大 IO 模型的不同之处也就在于这两个读取操作怎么交互


二、同步/异步和阻塞/非阻塞

  • 同步与异步:这是应用层的关键概念。同步指调用函数后需等待其执行完毕再继续,而异步则允许立即执行后续操作,并在另一线程中处理被调用的函数。重点在于线程间的协作与消息通信机制。同步IO涉及发出调用后亲自等待结果,而异步IO则在整个过程中无需参与,直至数据准备就绪。
  • 阻塞与非阻塞:在硬件层面,阻塞指CPU暂停当前任务处理其他进程,如IO操作