Linux下的五中典型IO详解(上)

IO模型的引出:由于进程无法对IO设备直接进行操作,所以需要发起系统调用来完成IO操作,内核会为每一个设备维护一个缓冲区用于进行数据拷贝。

阻塞IO:进程为了完成IO操作发起系统调用,若当前不具备IO操作条件,则进程一直等待直到具备操作条件,操作完成之后返回调用
在这里插入图片描述
非阻塞IO:进程为了完成IO操作发起系统调用,若当前不具备操作条件则立即保存返回,然后进程去进行其它操作,过一段之间之后回来轮询判断条件
在这里插入图片描述
信号驱动IO:进程在发起系统调用之前,提前对IO信号进行自定义处理方式(这期间进程可以去处理其他事情),当具备操作条件时,操作系统通过信号通知进程发起IO调用,直接进行数据拷贝
在这里插入图片描述
异步IO:IO的操作条件的等待与数据拷贝都由操作系统来完成,当操作系统IO操作完成之后通过信号通知进程,进程直接对数据进行操作
在这里插入图片描述
>> 一些重要概念 <<
阻塞与非阻塞:阻塞与非阻塞关注点在于当前不具备IO操作条件,是否进行等待

同步与异步:同步与异步的关注点在于IO的操作条件的等待与数据拷贝是否由进程自己来完成的;同步通常是阻塞的,但是异步有可能是阻塞的,也有可能是非阻塞的

异步阻塞与异步非阻塞:异步阻塞与异步非阻塞关注点在于是否进行等待

内核空间与用户空间:为了保护内核的安全性,操作系统将虚拟地址空间(一般为4G)分为内核空间和用户空间,针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。

进程切换:为了控制进程的执行,内核能将正在执行的进程挂起然后恢复之前挂起的某个进程的过程称为进程切换,即从一个进程的运行上转到另一个进程的运行上。

进程阻塞:衣蛾进程在运行过程中由于突发某件事情,需要进行等待操作,此时进程会执行阻塞原语自动切换到阻塞状态。(进程只能由运行态才能切换到阻塞态,处于阻塞态的进程是不占用cpu资源的)

Linux下的AIO:允许一个进程启动一个或多个IO操作,进程发起I/O操作,而不用阻塞或等待任何操作完成,稍后或在接收到I/O操作完成通知时,进程可以I/O操作结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值