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

Unix的I/O模型

时间:2017-02-13 21:46:32      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:href   9.png   阻塞   doc   模型   model   ade   操作   font   

    对于一次I/O操作(以read为例),数据首先被拷贝到内核的某个缓冲区,然后再从内核缓冲区拷贝到应用进程缓冲区。

因此,一次I/O操作通常包含两个阶段:

(1) 等待数据准备好

(2) 从内核向进程复制数据

 

Unix有5种I/O模型:

  1. 阻塞式I/O
  2. 非阻塞式I/O
  3. I/O复用(select, poll, epoll)
  4. 信号驱动式I/O(SIGIO)
  5. 异步I/O(POSIX的aio_系列函数)

阻塞式I/O

技术分享

非阻塞式I/O

技术分享

I/O复用(select, poll, epoll)

技术分享

信号驱动式I/O(SIGIO)

技术分享

异步I/O(POSIX的aio_系列函数)

技术分享

5种I/O模型的比较

技术分享

其中,前四种为同步I/O模型,最后一种为异步I/O模型。

同步与异步:

    同步I/O操作导致请求进程阻塞,直到I/O操作完成;

    异步I/O操作不会导致请求进程阻塞。

阻塞与非阻塞:

    一个方法调用后,等待数据就绪再返回就是阻塞;立即返回就是非阻塞。

下面这个解释也不错:

技术分享

参考资料:

Linux IO模式及 select、poll、epoll详解

I/O 模型的演进

Unix的I/O模型

标签:href   9.png   阻塞   doc   模型   model   ade   操作   font   

原文地址:http://www.cnblogs.com/gattaca/p/6395399.html

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