Unix环境下的I/O模型

概述

在Unix环境下,有5种不同的I/O模型:

  • 阻塞I/O(blocking I/O)
  • 非阻塞I/O(nonblocking I/O)
  • I/O复用(I/O multiplexing,select and poll)
  • 信号驱动I/O(signal driven I/O,SIGIO)
  • 异步I/O(asynchronous I/O,the POSIX aio_functions)

通常情况下,I/O输入操作主要包含这两个阶段:

  • 等待数据准备好
  • 内核和应用进程之间拷贝数据

下面从这两点去比较不同的I/O模型。

几种模式的分别描述

阻塞I/O

进程发起单个I/O调用后,同步等待数据准备和数据拷贝。

 

image.png

 

非阻塞I/O

进程发起单个I/O调用后,轮询数据准备是否完成,然后,再同步等待数据拷贝。

 

image.png

 

I/O复用

进程使用select方法对发起的多个I/O调用进行检查,同步等待数据准备完成,然后再同步拷贝数据。

 

image.png

 

信号驱动I/O

进程发起I/O调用后立马返回,待收到数据准备信号后,再同步拷贝数据。

 

image.png

 

异步I/O

进程发起I/O调用后,待数据准备好,并且拷贝完成后,再异步进行处理。

 

image.png

 

几种模式的比较

前面四种模式的主要区别在于第一阶段有所不同,第二阶段都是一样的,同步拷贝数据。相比之下,异步I/O两个阶段就是纯异步的。

 

image.png

 

 

[1] Unix Network Programming. link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值