I/O操作分类

本文深入解析了I/O模型,包括阻塞I/O、非阻塞I/O、I/O复用、信号驱动I/O和异步I/O等概念,并探讨了它们在POSIX标准下的分类。文章还解释了同步I/O和异步I/O的区别,以及如何在NIO框架中应用这些模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照《Unix 网络编程》的划分,I /O 模型可以分为: 阻塞 I /O、非阻塞 I /O、I /O 复用、信号驱动 I /O 和异步 I /O,按照 POSIX标准来划分只分为两类: 同步 I /O 和异步 I /O。一个 I /O 操作实际上分成了两个步骤: 发起 I /O 请求和实际的 I /O 操作,同步I /O 和异步 I /O 的区别就在于第二个步骤是否阻塞,如果实际的 I /O 读写阻塞请求进程,那么就是同步 I /O,因此阻塞 I /O、非阻塞 I /O、I /O 复用、信号驱动 I /O 都是同步 I /O,如果实际的 I /O 读写操作不阻塞请求进程,而是操作系统帮你完成 I /O 读写,将数据从内核内存区读取到用户空间再将结果返回给你,那么就是异步 I /O。阻塞 I /O 和非阻塞 I /O 的区别在于第一步,发起 I /O 请求是否会被阻塞,如果阻塞直到完成那么就是传统的阻塞 I /O,如果不阻塞,那么就是非阻塞 I /O。

I/O操作
例如,基于Reactor模型的 NIO 框架做到的仅仅是发起 I /O 请求时不阻塞,具体的 I /O 读写是有相应的时间派发处理器交给用户线程来处理的.

参考文献:
[1]叶柏龙,刘蓬.Proactor模式的NIO框架的设计与实现[J].计算机应用与软件,2014,31(09):110-113.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值