Linux I/O彻底解惑

直接上图

在这里插入图片描述

0-1.用户Call App
0-2.Cpu初始化App
1-1.用户线程Call内核线程
1-2.用户线程Wait for 内核线程返回
----------Context Switching No1-----------
2-1.内核线程Call DMA
2-2.内核线程Wait for data
----------Context Switching No2-----------
3-1.DMA从Sokcet中获取数据
3-2.DMA拷贝数据到内核空间
----------Context Switching No3-----------
4.用户线程拷贝数据到用户空间
----------Context Switching No4-----------
5.用户线程Blcoking结束,进入后续执行。
以上就是Blocking IO的生命周期,
    Blocking阶段在①DMA I/O数据往内核空间-->准备②CPU I/O数据往用户空间-->拷贝
 
 辨析 阻塞与非阻塞:
通过下图可以轻易得知:
 1. Blocking I/O------->阶段①Blocking,阶段②Blocking
 2. Non Blocking I/O-->阶段①Non Blocking,阶段②Blocking
 3. I/O Multiplexing--->阶段①Blocking,阶段②Blocking
 4. Signal Driven IO--->阶段①Non Blocking,阶段②Blocking
 5. Asynchronous IO-->阶段①Non Blocking,阶段②Non Blocking
 
结论:
1.首先阻塞与非阻塞,这个是针对用户线程的角度来说的,
2.从计算机的位运算来说除去5是非阻塞式I/O,其他都是阻塞式I/O
3.从阶段①来看,1,3是阻塞式I/O,2,4,5是非阻塞式I/O
4.从效率的某种程度上来说,3,5模型优于其他,但5操作复杂,3就成了最热门的。

辨析 同步与异步
1.同步是Synchronous Communication
2.异步是Asynchronous Communication

同步异步谈的是通讯的机制,与阻塞非阻塞无关,
同步与异步,是针对CPU的角度来说的,
下图的1.2.3.4都属于同步I/O,因为最终的数据拷贝都是CPU调度拷贝的,
异步I/O则不然,数据准备与数据拷贝全部都是由I/O设备去做的,I/O设备完事后给了CPU一个信号而已。


    
    

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值