Unix的I/O模型
2024-10-09 02:02:42
对于一次I/O操作(以read为例),数据首先被拷贝到内核的某个缓冲区,然后再从内核缓冲区拷贝到应用进程缓冲区。
因此,一次I/O操作通常包含两个阶段:
(1) 等待数据准备好
(2) 从内核向进程复制数据
Unix有5种I/O模型:
- 阻塞式I/O
- 非阻塞式I/O
- I/O复用(select, poll, epoll)
- 信号驱动式I/O(SIGIO)
- 异步I/O(POSIX的aio_系列函数)
阻塞式I/O
非阻塞式I/O
I/O复用(select, poll, epoll)
信号驱动式I/O(SIGIO)
异步I/O(POSIX的aio_系列函数)
5种I/O模型的比较
其中,前四种为同步I/O模型,最后一种为异步I/O模型。
同步与异步:
同步I/O操作导致请求进程阻塞,直到I/O操作完成;
异步I/O操作不会导致请求进程阻塞。
阻塞与非阻塞:
一个方法调用后,等待数据就绪再返回就是阻塞;立即返回就是非阻塞。
下面这个解释也不错:
参考资料:
Linux IO模式及 select、poll、epoll详解
I/O 模型的演进
最新文章
- 《数据结构与算法分析》学习笔记(五)——二叉树
- Ngrok 内网穿透神器(转载)
- 读取AD模拟分量
- poj 2195 Going Home(最小费用最大流)
- MySQL的EXPLAIN命令详解(转)
- Spring MVC使用commons fileupload实现文件上传功能
- Java基础知识强化之网络编程笔记02:Socket通信原理图解
- jni 入门 android的C编程之旅 --->;环境搭建&;&;helloworld
- 浅析IO模型
- OpenCv 2.4.9 (二) 核心函数
- 201521123103 《java学习笔记》 第十周学习总结
- 【Kafka】
- CentOS6搭建OpenVPN服务器
- 企业内部DNS跨国配置案例
- Java基础-工厂设计模式(三锅的肥鸡)
- opencv 图片剪切
- read_csv 的 names 和 index_col 参数作用
- Fiddler常用命令
- debian安装tftp服务
- Expm 2_2 查找中项问题