Linux I/O
来源:互联网 发布:为什么卸载不了软件 编辑:程序博客网 时间:2024/05/16 16:56
计算机系统中除CPU和内存外的其他设备都可以看作I/O设备。I/O设备按其工作方式的不同大体可分为字符设备、块设备(标准的计算机组成结构中这部分和内存都属于存储器)和网络设备三类。
- 字符设备(character/raw device):以字符为单位进行传输的设备,只能顺序存取以字节为最小单位的数据,不能随机存取数据。
- 块设备(block device):以块为单位进行传输的设备,以块为基本传输单位,可随机存取数据。
- 网络设备:进行数据网络传输的设备,是面向数据包的传输。
Linux的内核将所有外部设备都可以看做一个文件来操作,应用程序通过调用文件操作的系统调用和内核交互,来实现外部设备的访问和操作。每一个字符设备和块设备都会在devfs文件系统(/dev/)中创建一个文件作为入口点,用户可利用基本的文件I/O操作来访问这些文件。而网络设备在devfs文件系统中没有入口点,用户需要借助socket实现网络设备的访问。
I/O操作
Linux的I/O操作根据在用户空间中操作中有无buffer可分为(与内核中有无buffer无关)bufferedI/O和unbuffered I/O两类。
- Unbuffered I/O:Linux系统提供的I/O方法,直接使用系统调用接口来实现其open/read/write操作
- Buffered I/O:标准 C提供的一种流操作方法,通过在用户空间创建buffer缓存操作数据来减少系统调用的次数以提高效率。
在Linux中大部分字符设备和网络设备都支持unbuffered I/O,块设备两种方法都支持。
I/O同步/异步
同步/异步是消息的通知机制。
- 同步(synchronous):在发出一个功能调用时,在没有得到结果之前,该调用就不返回
- 异步(asynchronous):当一个异步过程调用发出后,调用者不会立刻得到结果。实际处理这个调用的部件是在调用发出后,通过状态、通知来通知调用者,或通过回调函数处理
I/O阻塞/非阻塞
阻塞/非阻塞是程序在等待消息(无所谓同步或者异步)时的状态。
- 阻塞(blocking):调用结果返回之前当前线程会被挂起,函数只有在得到结果之后才会返回
- 非阻塞(non-blocking):在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回
参考
http://blog.chinaunix.net/uid-26000296-id-3754118.html
0 0
- Linux I/O及 I/O Cache
- linux file I/O
- Linux I/O端口
- Linux I/O体系结构
- Linux I/O函数
- Linux file I/O
- Linux I/O资源
- Linux设备I/O
- Linux I/O scheduler
- 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
- 各种分类指标
- BOS项目 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)
- WPF 美化界面,样式的使用(资源)1
- 用C#操作office组件库实现word文档的创建及文字 表格 图片的插入
- request对象的方法-web
- Linux I/O
- 惊曝6.24AppCan移动开发大会参展名录,现场礼品超多!
- java读写txt文件
- 我对Android学习的一些看法------追求本真的味道
- (源码解读)commander 飞行模式,控制模式
- RestfulAPI设计指南
- vivado中dcp的使用
- 备忘内容
- 源湾一日游有感