5.1 I/O 管理概述
I/O 设备
- 按使用特性分类
- 人机交互类外部设备
- 存储设备
- 网络通信设备
- 按传输速率分类
- 低速设备:0~1000 B/s,如鼠标键盘
- 中速设备:0~100000 B/s,如行式打印机、激光打印机
- 高速设备:0~1000,000,000 B/s,如磁带、磁盘
- 按信息交换的单位分类
- 块设备:有结构,可寻址,速率高
- 字符设备:无结构,通常采用中断驱动方式
I/O 控制方式
- 程序直接控制
- 中断驱动方式
- DMA 方式
- 通道控制方式
- 通道是专门负责输入输出的处理机
- 与 CPU 相比,通道指令类型单一,没有自己内存,需与 CPU 共享主存
- 与 DMA 相比,DMA 需要 CPU 控制存储位置与长度,通道可以自己直接控制。DMA 只能对应一台设备与内存传递数据,通道可以控制多台设备与内存交换数据。
I/O 子系统的层次结构
- 用户层 I/O 软件:一部分为用户层非内核的库函数,一部分为内核态的需要系统调用来获取的服务
- 设备独立性软件
- 价值
- 将 物理设备 进一步封装为 逻辑设备
- 增加设备分配的灵活性且易于实现 I/O 重定向
- 功能
- 执行所有设备的公有操作
- 向用户层提供统一的接口
- 价值
- 设备驱动程序:与设备直接相关,负责具体实现系统对设备发出的操作指令。屏蔽控制器之间的差异。
- 中断处理程序
- 硬件设备:通常包含一个机械部件和一个电子部件,且一般将电子部件称为 设备控制器(适配器)
设备控制器
- 功能
- 通过自带的寄存器接受识别 CPU 或通道的命令
- 实现数据交换
- 发现和记录设备自身的状态信息
- 设备地址识别
- 组成
- 与 CPU 的接口:包括三类信号线,分别为 数据线、地址线、控制线
- 设备控制器与设备的接口:包含 数据、控制、状态 三种信号
- I/O 控制逻辑
I/O 管理需要完成的内容
- 状态跟踪
- 设备存取
- 设备分配
- 设备控制
5.2 I/O 核心子系统
I/O 核心子系统主要服务
- I/O 调度
- 缓冲与高速缓存
- 设备分配与回收
- 假脱机
- 设备保护和差错处理
I/O 调度概念
- 磁盘调度算法即为 I/O 调度的一种
- 通过重新安排 I/O 请求的队列顺序,以改善系统总体效率和应用程序的平均响应时间
- 可以使用缓冲、高速缓存等技术改善效率
高速缓存与缓冲区
- Disk Cache:磁盘高速缓存
- 逻辑上是磁盘高速缓存,物理上通常用内存,可单独开辟一块内存空间用于磁盘高速缓存,也可以直接和请求分页共享未利用的空间
缓冲区
- 目的
- 缓和 CPU 与 I/O 设备间速度不匹配的矛盾
- 减少对 CPU 的中断频率和中断相应时间的限制
- 解决基本数据单元大小不匹配问题
- 提高 CPU 和 I/O 设备之间的并行性
- 实现方式
- 采用硬件缓冲器:成本较高
- 采用缓冲区(内存区域)
- 特点
- 未写满不可读,未读完不可写
- 技术分类
- 单缓冲
- 双缓冲:提高读写并行率
- 循环缓冲
- 缓冲池
- 缓冲区与高速缓存的对比
设备的分配和回收
- 设备分类
- 独占式使用设备,如打印机
- 分时式使用设备,如磁盘
- SPOOLing方式使用的外部设备,共享打印机
- 设备分配的相关数据结构
- SDT(System Device Table) 系统控制表
- 记录系统的所有设备信息,每条信息对应其 DCT 和驱动程序入口
- DCT(Device Control Table) 控制器表
- 每个设备描述中包含类型、标识符、状态、对应控制器控制表指针、设备队列队首指针
- COCT(Controller Control Table) 控制器控制表
- 记录与其相连的通道表指针、控制器队列的队首队尾指针
- CHCT(Channel Control Table) 通道控制表
- 通道状态、通道相连的控制器表首址、通道队列队首指针、通道队列队尾指针
- SDT(System Device Table) 系统控制表
- 设备分配策略
- 原则
- 提升效率
- 避免死锁
- 分配方式
- 静态分配:一次性分配给一个作业所有要求的设备
- 动态分配:随用随分
- 分配算法
- 先请求先分配、优先级优先分配
- 常用方式
- 独占设备可静态可动态,但通常用静态
- 共享设备常用动态
- 原则
- 设备分配的安全性
- 安全分配
- 进程请求 I/O 后便阻塞等待,直到 I/O 完成才恢复
- 效率低,但不会死锁(破坏持有请求必要条件)
- 不安全分配
- 请求 I/O 后继续运行,并允许请求其他资源
- 并行度高,效率高,但可能死锁,可分配时用如银行家算法进行计算
- 安全分配
- 逻辑设备到物理设备的映射
- LUT(Logical Unit Table)逻辑设备表:用于逻辑设备至物理设备的映射
- 两种建表方式
- 整个系统只设置一张 LUT,不允许相同逻辑设备名,适用于单用户系统
- 每个用户设置一张 LUT
- 两种建表方式
- LUT(Logical Unit Table)逻辑设备表:用于逻辑设备至物理设备的映射
SPOOLing 技术
- 输入井和输出井(磁盘中)
- 输入缓冲区和输出缓冲区
- 输入进程和输出进程