BUAA-OS-Theory-Chapter5
第五章 输入输出系统
I/O 硬件基本原理
设备管理目标与功能
管理目标
- 提高效率:提高 I/O 的访问效率,匹配 CPU 与外设间的速度差异
- 方便使用:便于用户使用
- 方便控制:便于操作系统内部对设备的控制
管理功能
- 提供设备使用的用户接口:命令接口、编程接口
- 设备分配和释放:使用设备前需要分配资源
- 设备的访问与控制:并发访问、差错处理
- I/O 缓冲与调度:提高 I/O 效率
设备控制器
- 组成:数据寄存器、控制寄存器、状态寄存器
I/O 软件基本原理
I/O 控制方式
- 程序控制 I/O:轮询方式,由 CPU 发出忙等指令,直至操作完成才能继续执行
- 中断驱动:当 I/O 操作结束后,主动通知工作已完成,不需轮询
- DMA:直接存储器访问,由一个控制器完成内存与设备间的传输工作。
- 通道:一个内存数据传输的处理器
轮询工作方式
- 进程提出访问请求
- 驱动程序检查并向设备发出控制命令
- 驱动持续轮询设备是否完成任务
- 完成后返回,进程继续工作
实现简单,但 CPU 利用率低,轮询浪费资源
中断驱动方式
- 进程提出访问请求
- 驱动程序发出控制命令,并记录目标设备,CPU 继续工作
- 设备完成操作后向 CPU 申请中断,把结果返回给上一步的记录处
- 数据送达,进程继续工作
DMA - 直接存储访问方式
CPU 设置 DMA 控制器中的数值,驱动 DMA 进行访问。CPU 只需要准备数值启动,但每个设备都要占用一个 DMA 控制器。
- 中断和 DMA 方式都使用中断,但中断控制方式数据传输由CPU 完成,DMA 中由 DMA 控制器完成,不需要 CPU 干预。
- 中断在每个数据传输结束后中断 CPU,而 DMA 在传送的一批数据结束后才中断 CPU
I/O 通道控制方式
I/O 通道是专门负责输入输出的处理器,执行通道程序,在内存中处理复杂的 I/O 控制,比 DMA 的 CPU 干预要少。
通道独立处理 I/O 的功能更强;同时通道比 DMA 控制的设备数/种类更多
缓冲技术
利用缓冲可以提高外设的利用率,减少中断发生的次数,提高 CPU、I/O 设备的并行性。
缓冲分类
- 单缓冲:CPU、外设轮流使用,等待对方处理
- 双缓冲:CPU 和外设工作互不干扰,要求两者速度相近
- 环形缓冲:允许处理速度相差大
- 缓冲池:分三个队列利用缓冲区
设备分配
由于外设资源有限,需要通过设备分配管理进程使用外设的过程
数据结构
- 设备控制表:描述单个设备的特性、状态、连接情况
- 控制器控制表:描述设备控制器占用的中断号、数据通道等的分配情况
- 通道控制表:描述单个通道的工作状态
- 系统设备表:系统内的所有资源状态,记录设备状态与设备控制表地址
设备分配分为 单通路/多通路 I/O 系统的设备分配
- 步骤为:分配设备、分配设备控制器、分配通道
设备驱动共性
核心代码、核心接口、核心机制与服务、动态可加载、动态性
假脱机技术 - SPOOLing
SPOOLing 技术,即虚拟设备技术。系统利用一个 SPOOLing 进程完成对设备的 I/O 操作。
实际上,用户进程与 SPOOLing 程序进行数据交互,随后 SPOOLing 再和外设进行数据交换。虚拟 I/O 程序包含一个缓冲池:用户持续访问缓冲池,SPOOLing 对数据进行合适的处理。
- SPOOLing 实现了一个虚拟 I/O 的端口,提高了实现 I/O 的速度
- 通过对物理设备的修饰,原本独享的设备也可以在 SPOOLing 中提供虚拟设备,按序共享使用
总结
- 在中断驱动方式中,CPU 以字节为单位干预;DMA 方式中以数据块为单位干预;I/O 通道方式中以一组数据块为单位干预
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 sin!