浅谈Linux下的五种I/O模型
来源:互联网 发布:淘宝联盟怎么赚取佣金 编辑:程序博客网 时间:2024/06/05 17:08
一、关于I/O模型的引出
我们都知道,为了OS的安全性等的考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer。
如下图所示:
因此整个请求过程即为:用户进程发起请求,内核接受到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数据后再响应客户端。
在整个请求的过程中,数据输入至buffer需要时间,而从buffer复制数据至进程也需要时间。因此根据在这两段时间内等待方式的不同,I/O动作可以分为以下五种模式:
阻塞I/O (Blocking I/O)
非阻塞I/O (Non-Blocking I/O)
I/O复用(I/O Multiplexing)
信号驱动的I/O (Signal Driven I/O)
异步I/O (Asynchrnous I/O)
二、关于I/O模型的划分
概念解释:
阻塞:调用的进程一直处于等待状态,直到操作完成。
非阻塞:在内核的数据还未准备好时,会立即返回,进程可以去干其他事情。
从同步异步,以及阻塞、非阻塞两个维度来划分来看
0 0
- 浅谈Linux下的五种I/O模型
- 浅谈Linux下的五种I/O模型
- 浅谈Linux下的五种I/O模型
- Linux下的五种I/O模型
- Linux下的五种I/O模型
- Linux下的五种I/O模型
- Linux下的五种I/O模型
- Linux下的五种I/O模型
- Linux下的五种I/O模型
- Linux下的五种I/O模型
- Linux下的五种I/O通信模型
- Linux下的五种I/O模型
- Linux的五种I/O模型
- 浅谈Linux的I/O模型
- Unix下的五种I/O模型图
- Linux Socket五种I/O模型
- Linux Socket五种I/O模型
- Linux Socket五种I/O模型
- 混淆打包
- java中InputStream转化为byte[]数组
- 一个由PROGUARD与FASTJSON引起的血案
- java对象与字符串之间的序列化和反序列化
- 【Unity3D游戏开发】基于NGUI的表情图文混排解决方案 (二二)
- 浅谈Linux下的五种I/O模型
- mybatis-generator自定义注释生成
- 关于分布式事务那点事
- iOS开发通知那些事
- 行为型模式11之4-Chain of Responsibility责任链模式例子理解
- 基础概念1
- 交叉销售功能介绍-功能
- 网络的理解
- 【CSS3】变形--位移 translate()