对五种IO模型的总结
对于一个套接字上的输入操作,第一阶段是等待数据从网络中到达,当数据到达时被复制到内核中的某个缓冲区。第二阶段就是把数据从内核缓冲区复制到应用进程缓冲区
第一、二阶段全阻塞:阻塞式IO
第一阶段非阻塞,第二阶段阻塞:
-
非阻塞式IO(轮询模式)
-
信号驱动IO
完全非阻塞
异步IO
多路复用IO: 理解为先进行 select 操作后再进行 IO 操作, 实现用户进程对多个套接字 Select, 只要一个 socket 准备好就可以进行 IO , 两段都是阻塞的, 谁先完成谁服务
异步IO: 由内核在数据拷贝完成时, 通知应用程序(而信号驱动是告诉应用程序何时可以开始拷贝数据)。