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命令等待其完成
-
不引入线程切换,减少开销
-