【Linux】图解五种IO模型

  • 时间:
  • 来源:互联网
  • 文章标签:

五种IO模型

发起IO调用的时候,操作系统让我们以后进行IO的的时候选择合适的场景来选择合适的IO模型

IO的过程:IO等待+IO调用。
发起IO调用,等待IO就绪条件(比如Recv的时候,得有数据的时候才可以接受数据),然后将数据拷贝到缓冲区进行处理。

阻塞IO :为了完成IO,而发起的调用,若当前不具备IO条件,则一直等待

在这里插入图片描述
优点: 流程非常简单,清晰明了,一个IO完毕之后才能进行下一个
缺点: 对于CPU没有充分利用,大部分时间都在IO等待。

非阻塞IO : 为了完成IO,发起调用,若当前不具备IO条件,则立即返回(干点其它的事情,干完了之后需要重新发起IO)

优点:流程相对阻塞操作来说,相对复杂,但是对资源的利用更加充分。
缺点:IO操作不够实时

信号驱动IO: 定义一个IO信息的处理方式,在处理中进行IO操作。IO就绪之后信号通知进程,进程在IO就绪的时候取进行IO.(操作顺序是不定的,不用特意的等待IO就绪)

在这里插入图片描述
优点:IO更加实时,最资源的利用也更加充分
缺点:流程更加复杂。

异步IO: 通过异步IO告诉操作系统,IO有哪些数据拷贝到那里,IO的等待与拷贝的过程都由操作系统来完成(操作顺序是不定的,功能由操作系统完成)

在这里插入图片描述

优点: 对资源的利用更加充分。
缺点: 流程更加复杂。

本文链接http://www.taodudu.cc/news/show-83220.html