5种IO模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5种IO模型相关的知识,希望对你有一定的参考价值。

1 阻塞式I/O模型:

   应用进程 --> 内核 (1 没有数据就等待数据,2当数据到来的时候,内核把数据复制到用户空间)--> 应用进程

2 非阻塞式I/O模型:

   应用进程 --> 内核 (1 没有数据的时候,应用进程每隔一段时间就调用一次,2当数据到来的时候,内核把数据复制到用户空间)--> 应用进程

3 I/O 复用模型:

       专门设置一个进程(select进程)每隔一定时间轮询注册在它上门的IO是否有数据,如果有就通知有数据的那个进程(注册在select上面的进程)

    然后有数据的那个进程--->内核(2 内核把数据复制到用户空间) -->有数据的进程

4 信号驱动模型:

      应用进程-->内核(应用进程通知完内核,就去干其他事情了,当有数据到达的时候,内核信号通知应用进程,然后应用进程阻塞,内核把数据复制到用户空间,然后返回)

5 异步模型:

      应用进程 -->内核(通知完内核后,应用进程就可以干其他的了,当有数据到来的时候,内核也不用通知应用进程,让应用进程阻塞,而是内核把数据复制到用户空间后才通知应用进程)

 

同步:内核拷贝数据的时候,应用进程是阻塞状态

异步:内核拷贝数据的时候,应用进程还在做自己的事情

 

阻塞,非阻塞,I/O复用,信号驱动,都是同步。最后的异步才是真正的异步。

 

 

 

      

 

   

 

以上是关于5种IO模型的主要内容,如果未能解决你的问题,请参考以下文章

5种IO模型阻塞IO和非阻塞IO同步IO和异步IO

5种网络IO模型(有图,很清楚)

轻松搞懂5种IO模型

Linux五种IO模型

Linux系统编程——深度理解5种IO模型

Linux系统编程——深度理解5种IO模型