Linux I/O模型介绍

linux IO流程
在这里插入图片描述
Linux IO流程:
第一阶段 等待数据准备好(Waiting for the data to be ready)
第二阶段 从内核向进程复制数据(Copying the data from the kernel to the process)
有两次数据拷贝
第一次 DMA从磁盘上读取数据拷贝到内核空间
第二次 数据从内核空间拷贝到用户空间

I/O模型划分为以下五种类型

1.阻塞式I/O模型 对应java中BIO

同步阻塞式IO
在这里插入图片描述
第一阶段和第二阶段都是阻塞的

2.非阻塞式I/O模型

在这里插入图片描述
当用户发起一次IO操作,系统会立即返回结果,当前线程不阻塞,不停的轮询向系统发起请求,询问数据是否准备完成 类似与Future.get()方法
第一步是非阻塞的 第二步时阻塞的

3.I/O复用模型 对应java中NIO

异步阻塞IO 异步:DMA将数据从硬盘拷贝到内核态是异步的 阻塞:内核态数据拷贝到用户态是阻塞的
在这里插入图片描述
与非阻塞式IO不同的地方在于第一个阶段通道可以监听一批请求,不断的轮询,哪一个数据准备好了他就可以返回,然后进行处理

4.信号驱动时I/O

java不支持
在这里插入图片描述
每次IO请求会向核态注册一个信息,当内核态数据准备好了会回调通知,但内核态数据到用户态数据拷贝也是阻塞的。

5.异步I/O 对应java中AIO

在这里插入图片描述
真正的异步 当数据准备到用户态后再回调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值