I/O管理概述
I/O的特点:
资源多、杂,并发,均来自I/O
- I/O性能经常成为系统性能的瓶颈
- 操作系统庞大复杂的原因之一:
- 速度差异很大
- 应用
- 控制接口的复杂性
- 传送单位
- 数据表示
- 错误条件
设备的分类——按数据组织分
块设备
- 以数据块为单位存储、传输信息
- 传输速率较高、可寻址(随机读写)
字符设备
- 以字符为单位存储、传输信息
- 传输速率低、不可寻址
设备的分类——从资源分配角度
独占设备
- 在一段时间内只能有一个进程使用的设备,一般为低速I/O设备(如打印机,磁带等)
共享设备
- 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高(如硬盘)
虚设备
- 在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备。
目的:将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率
IO设备组成
- IO设备一般由机械和电子两部分组成
- (1)机械部分是设备本身(物理装置)
- (2)电子部分又称为设备控制器(或适配器)
引入缓冲技术解决什么问题?
操作系统中最早引入的技术
- ——》解决CPU与IO设备之间速度的的匹配问题
- 凡是数据到达和离去速度不匹配的地方均可采用缓冲技术
- ——》提高CPU与IO设备之间的并行性
- ——》减少了IO设备对CPU的中断请求次数,房款CPU对中断响应时间的要求。
缓冲技术实现
- 缓冲区分类
- 硬缓冲:由硬件寄存器实现(例如:设备中设置的缓冲区)
- 软冲区:在内存中开辟一个空间,用作缓冲区
- 缓冲区管理
- 单缓冲
- 双缓冲
- 缓冲池(多缓冲,循环缓冲):统一管理多个缓冲区,采用有界缓冲区的生产者/消费者模型对缓冲池中的缓冲区进行循环使用
UNIX SYSTEM V 缓冲技术
- 采用缓冲池技术,可平滑加快信息在内存和磁盘之间的传输
- 缓冲区结合提前读和延迟写技术对具有重复性及阵法性IO进程、提高IO速度很有帮助
- 可以充分利用之前从磁盘读入、虽已传入用户区但仍在缓冲区的数据(尽可能减少磁盘IO的次数,提高系统运行的速度)
缓冲技术的实现:
- 缓冲池:200个缓冲区(512字节或1024字节)
- 每个缓冲区由两部分组成:
- 缓冲控制块或缓冲首部+缓冲数据区
- 空闲缓冲区队列(av链)
- 队列头部为bfreelist
- 设备缓冲队列(b链)
- 链接所有分配给各类设备使用的缓冲区,按照散列方式组织
UNIX缓冲技术
每个缓冲区同时在av链和b链:
- 开始:在空闲av链(缓冲区未被使用时)
- 开始IO请求:在设备IO请求队列和设备b链
- IO完成:在空闲av链和设备b链
I/O性能问题
- 使CPU利用率尽可能不被I/O降低
- 使CPU尽可能摆脱I/O
- 减少或缓解速度差距——》缓冲技术
- 使CPU不等待I/O——》异步I/O
- 让CPU摆脱I/O操作——DNA、通道
异步传输
- Windows提供两种模式的IO操作:
- 异步和同步
- 异步模式:用于优化应用程序的性能
- 通过异步IO,应用程序可以启动一个IO操作,然后再IO请求执行的同时继续处理
- 基本思想:填充IO操作间等待的CPU时间
- 同步IO:应用程序被阻塞直到IO操作完成
同步传输IO流程
- 在IO处理过程中,CPU处于空闲等待状态
- 而在处理数据的过程中,不能同时进行IO操作
异步传输IO的基本思想
- 系统实现
- 通过切换到其他线程保证CPU利用率
- 对少量数据的IO操作会引入切换的开销
- 用户实现
- 将访问控制分成两段进行
- 发出读取指令后继续做其他操作
- 当需要用读入的数据的时候,在使用wait命令等待其完成
- 不引入线程切换,减少开销