第五章 输入输出系统

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 设备的并行性。

image-20230530145421259

缓冲分类

  • 单缓冲:CPU、外设轮流使用,等待对方处理
  • 双缓冲:CPU 和外设工作互不干扰,要求两者速度相近
  • 环形缓冲:允许处理速度相差大
  • 缓冲池:分三个队列利用缓冲区

设备分配

由于外设资源有限,需要通过设备分配管理进程使用外设的过程

数据结构

  • 设备控制表:描述单个设备的特性、状态、连接情况
  • 控制器控制表:描述设备控制器占用的中断号、数据通道等的分配情况
  • 通道控制表:描述单个通道的工作状态
  • 系统设备表:系统内的所有资源状态,记录设备状态与设备控制表地址

设备分配分为 单通路/多通路 I/O 系统的设备分配

  • 步骤为:分配设备、分配设备控制器、分配通道

设备驱动共性

核心代码、核心接口、核心机制与服务、动态可加载、动态性

假脱机技术 - SPOOLing

SPOOLing 技术,即虚拟设备技术。系统利用一个 SPOOLing 进程完成对设备的 I/O 操作。

实际上,用户进程与 SPOOLing 程序进行数据交互,随后 SPOOLing 再和外设进行数据交换。虚拟 I/O 程序包含一个缓冲池:用户持续访问缓冲池,SPOOLing 对数据进行合适的处理。

  • SPOOLing 实现了一个虚拟 I/O 的端口,提高了实现 I/O 的速度
  • 通过对物理设备的修饰,原本独享的设备也可以在 SPOOLing 中提供虚拟设备,按序共享使用

总结

  • 在中断驱动方式中,CPU 以字节为单位干预;DMA 方式中以数据块为单位干预;I/O 通道方式中以一组数据块为单位干预