2020-02-19 阻塞IO和非阻塞IO

2020-02-19  本文已影响0人  tanbin_tech

unix系统下常见的五种IO模型

  1. 阻塞式
  2. 非阻塞式
  3. IO复用(select,poll)
  4. 信号驱动(SIGIO)
  5. 异步调用(POSIX的aio系列函数)

一个输入操作通常具有两个不同的阶段

  1. 等待数据准备好
  2. 从内核将数据复制到进程

对于一个网络套接字上的输入操作:
1)等待数据从网络中到达 。
2)将内核缓冲区的数据复制到进程中

五种IO模型简介

1. 阻塞式

阻塞式(截取UNIX网络编程卷1)

2. 非阻塞式

非阻塞式(截取UNIX网络编程卷1)

应用进程反复轮询内核,查看操作是否就绪,这样做往往消耗大量的cpu时间

3. 信号驱动

信号驱动(截取UNIX网络编程卷1)

4. 多路复用

多路复用(截取UNIX网络编程卷1)

5. 异步

异步(截取UNIX网络编程卷1)

五种IO模型的对比

可见:前四种模型都是同步IO,因为真正的IO操作(recvfrom)将阻塞进程,只有最后一种才是异步IO

上一篇 下一篇

猜你喜欢

热点阅读