操作系统
第五章: 设备管理
I/O管理
-
I/O设备
-
I/O设备的类型
-
传输速率
-
低速设备
- 鼠标、键盘 每秒几十个字节到几百个字节
-
中速设备
- 打印机 每秒数千个或数万个字节
-
高速设备
- 磁盘机 每秒数百千个字节或数十兆字节
-
-
信息交换单位
-
字符设备
- 512B~4KB 可寻址 信息存取的数据块
-
块设备
- 用于数据的输入和输出,基本单位是字符
-
-
共享属性
-
拓展
- 用共享设备去模拟独占设备工作的过程,进而产生多个虚拟的独占设备
-
分类:
-
独占设备
- 只允许一个用户进程使用的设备
-
共享设备
- 允许多个进程使用的设备
-
虚拟设备
- 通过虚拟技术将一台独占设备改造成若干台逻辑设 备,供若干个用户进程同时使用
-
-
-
-
设备与控制器之间的接口
- 数据信号线
- 状态信号线
- 控制信号线
- 设备控制器
-
-
-
I/O设备通道
-
类型
-
字节多路
- 以字节交换方式工作
- 含有若干个非分配型子通道
- 每个子通道连接一台I/O设备
- 按时间片轮转方式共享主通道
- 用于中低速设备
-
数组选择
- 以数组方式进行数据传送
- 只有一个分配型子通道
- 不允许其他设备使用该通道
-
数组多路
- 字节多路和数组选择的综合
-
-
功能
- 特殊的处理机,具有执行I/O指令的能力
- 通过执行通道程序来控制I/O操作
- 指令单一
- 通道没有自己的内存
-
-
多通路I/O系统
- 存储器到设备之间有多通道
- 提高运输速率
-
总线系统
-
ISA和EISA总线
-
局部总线
-
VESA
-
PCI
I/O 管理控制
-
-
-
程序I/O方式
-
CPU要不断地测试I/O设备的状态
-
没有中断机构
-
让I/O设备无法向CPU报告已完成一个字符的输入操作(是CPU没有办法终止)
-
中断驱动I/O控制方式
-
加入中断
-
在输完一个数据时,需要CPU花费极短时间去做中断处理
-
DMA I/O控制方式
-
DMA
-
-
命令/状态寄存器CR
- 接收从CPU发来的I/O命令
- 有关控制信息
- 设备的状态
-
内存地址寄存器MAR
- 输入时,存放把数据从设备传送到内存的起始目标地址
- 输出时,存放由内存到设备的内存源地址
-
数据寄存器DR
- 存储数据
- 从设备到内存
- 从内存到设备
-
数据计数器DC
- 本次CPU要读或写的字节数
-
工作过程
- 设置MAR和DC初值
- 启动DMA传送命令
- 挪用存储器周期传送数据字
- 存储器地址增一
- 字节数寄存器减一
-
-
特征
- 传输单位是数据块
- 从设备和内存之间直接交互
- 尽在数据块的传送开始和结束时,才需要CPU干预,在控制器的控制下完成传送
-
-
I/O通道控制方式
-
进一步减少CPU的干预
-
对一组数据块的相关操作
-
通道程序
- 向I/O通道发送一条I/O指令,以给出其所要执行的通道程序首地址和要访问的设备
- 通道执行通道程序即可完成CPU的I/O任务
- 组成
- 向I/O通道发送一条I/O指令,以给出其所要执行的通道程序首地址和要访问的设备
-
- 操作码
- 内存地址
- 计数
- 通道程序结束位P
- 记录结束标志R
- I/O子系统层次
缓冲管理
-
缓冲
- 单缓冲
- 双缓冲
- 循环缓冲
-
缓冲池
-
既可以用于输入又可用于输出
-
空缓冲区
- 队列emq
-
装满输入数据的缓冲区
- 队列inq
-
装满输出数据的缓冲区
- 队列outq
-
设备分配
-
设备独立性
-
逻辑设备
-
物理设备
-
设备独立性软件
-
执行所有设备的公有操作
- 对独立设备的分配与回收
- 映射
- 对设备进行保护,禁止用户直接访问设备
- 缓冲管理
- 差错控制
-
向用户层(或文件层)软件提供统一接口
-
-
映射
-
好处
-
-
数据结构
- 设备控制表
- 控制器控制表
- 通道控制表
- 系统设备表
-
考虑因素
- 设备的固有属性
- 设备分配算法
- 设备分配中的安全性
-
分配程序
- 基本的设备分配程序
- 设备分配程序的改进
-
设备分配
-
I/O软件的目标
- 与具体设备无关
- 统一命名
- 对错误的处理
- 缓冲技术
- 设备的分配和释放
- I/O控制方式
-
I/O系统的层次
-
用户空间的软件
-
与设备无关的软件
-
设备驱动程序
-
功能
-
接受由I/O进程发过来的命令和参数,并将命令中的抽象要求转化为具体要求
- 如磁盘号转换为磁盘的盘面、磁道号及扇区号
-
检查用户I/O请求的合法性
- 了解I/O设备的状态
- 传递有关参数
- 设置设备的工作方式
-
发出I/O命令
- 如果设备空闲,便立即启动I/O设备去完成指定的操作
- 如果设备忙碌,则请求块挂在设备队列上等待
-
及时响应由控制器或通道发来的中断请求并进行处理
-
对于设置有通道的计算机系统,还可以根据用户的I/O请求,构成通道程序
-
-
设备处理方式
- 为每一类设备设置一个进程,专门用于执行这类设备的I/O操作
- 在系统中设置的一个I/O进程,专门用于执行系统中所有各类设备的I/O操作
- 不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序
-
特点
- 在I/O的进程与设备控制器之间的一个通信和转换程序
- 与I/O特性相关,不同类型的设备应该配置不同的驱动程序
- 与硬件相关,因此需要汇编语言
- 驱动程序与I/O设备所采用的控制方式紧密相关
-
处理过程
- 将抽象要求转换为具体要求
- 检查I/O请求的合法性
- 读出和检查设备的状态
- 传送必要的参数
- 工作方式的设置
- 启动I/O设备
-
-
中断处理程序
-
主要工作
- 进程上下文切换
- 对处理中断信号源进行测试
- 读取设备状态和修改进程状态
-
工作流程
- 唤醒被阻塞的程序
- 保护被中断进程的CPU环境
- 转入相应的设备处理现场
- 中断处理
- 恢复被中断进程的现场
-
-
硬件
-
SPOOLing技术
-
-
-
为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入、脱机输出技术
-
把低速I/O设备上的数据传送到高速磁盘上
-
实现
-
利用其中的一道程序,来模拟脱机输入时的外围控制机功
-
再用另一道程序来模拟脱机输出时外围控制机的功能
-
共享打印机
- 将输出进程在输出井中申请一个空闲磁盘块区,并将打印的数据送入其中
- 输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入,再将该表挂到请求打印队列
-
-
特点
- 提高I/O速度
- 将独占设备改造共享设备
- 实现了虚拟设备功能
-
磁盘存储器管理
-
磁盘性能简介
-
数据的组织和格式
-
磁盘类型
-
固定头磁盘
- 在每条磁道上都有一读/写磁头
-
移动头磁盘
- 每一个盘面仅配有一个磁头
- 移动磁头仅能以串行方式读/写
-
-
磁盘访问时间
-
寻道时间
- 启动磁臂的时间s与磁头移动n条磁道所花费的时间之和
- Ts=m×n+s
- m是一常数,与磁盘驱动器的速度有关
-
旋转延迟时间
- 指定扇区移动到磁头下面所经历的时间
-
传输时间
- Tt的大小与每次所读/写的字节数b和旋转速度有关
- r为磁盘每秒钟的转数;N为一条磁道上的字节数
-
总时间
-
-
-
磁盘调度算法
- 先来先服务FCFS
-
按进程请求访问磁盘的先后次序进行调度
-
最短寻道时间优先SSTF
-
选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象
-
可能产生“饥饿”现象
-
扫描(SCAN)算法
-
-
当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象
-
循环扫描(CSCAN)算法
- 磁头移到最外磁道时立即又返回到最里磁道
- 消除了对两端磁道请求的不公平
-
N-Step-SCAN
- N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列
- 每处理一个队列时又是按SCAN算法
- 当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其他队列
- N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列
-
FSCAN调度算法
- 一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理
- 将新出现的所有请求磁盘I/O的进程,放入另一个等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理
- 一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理
磁盘高速缓存
-
逻辑上属于磁盘,而物理上是驻留在内存中的盘块
-
形式
-
在内存中开辟一个单独的存储空间来作为磁盘高速缓存
-
把所有未利用的内存空间变成一个缓冲池,供请求分页系统和磁盘I/O时共享
- 当磁盘I/O的频繁程度较高时,该缓冲池可能包含更多的内存空间
- 而在应用程序运行得较多时,该缓冲池可能只剩下较少的内存空间
-
-
数据交付方式
-
数据交付
- 直接将高速缓存中的数据,传送到请求者进程的内存工作区
-
指针交付
- 只将指向高速缓存中某区域的指针,交付给请求者进程
- 数据量小,节省了时间
-
周期性地写回磁盘
- UNIX方法
- MS-DOS方法
提高速度的方法
- 提前读
- 延迟写
- 优化物理块的分布
- 虚拟盘