码迷,mamicode.com
首页 > 其他好文 > 详细

5种IO模型

时间:2017-06-01 10:13:14      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:select   应用   状态   返回   nbsp   用户   轮询   模型   拷贝   

1 阻塞式I/O模型:

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

2 非阻塞式I/O模型:

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

3 I/O 复用模型:

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

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

4 信号驱动模型:

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

5 异步模型:

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

 

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

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

 

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

 

 

 

      

 

   

 

5种IO模型

标签:select   应用   状态   返回   nbsp   用户   轮询   模型   拷贝   

原文地址:http://www.cnblogs.com/guojunwei/p/6926520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!