首页 > 代码库 > 5种IO模型

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模型