Appearance
I/O系统概述
考情分析
I/O 系统概述通常不单独出大题,但其中的 I/O 控制方式演进是后续程序查询、中断、DMA 的总纲。选择题常考外设与主机之间的速度矛盾、各控制方式的适用场景对比。
I/O 系统的组成
I/O 系统包含两大部分:
I/O 硬件:
- 外部设备(输入/输出/存储设备)
- I/O 接口(设备控制器)
- I/O 总线
I/O 软件:
- 驱动程序
- 中断处理程序
- 设备无关性软件(操作系统 I/O 子系统)
外部设备分类
按功能分类
| 类别 | 设备举例 | 方向 |
|---|---|---|
| 输入设备 | 键盘、鼠标、扫描仪、麦克风 | 外部 → 主机 |
| 输出设备 | 显示器、打印机、扬声器 | 主机 → 外部 |
| 外存储设备 | 磁盘、SSD、光盘、磁带 | 双向 |
按数据传输速率分类
| 速度类别 | 设备举例 | 特点 |
|---|---|---|
| 低速设备 | 键盘、鼠标 | 数据量小,对实时性要求不高 |
| 中速设备 | 打印机、扫描仪 | 数据量中等 |
| 高速设备 | 磁盘、SSD | 数据量大,要求高带宽 |
设备速度差异巨大:键盘每秒只产生几十字节数据,而 NVMe SSD 可以达到数 GB/s。如何让 CPU 高效管理速度差异如此大的设备,是 I/O 系统设计的核心问题。
I/O 控制方式演进
计算机发展过程中,I/O 控制方式不断改进,目标始终是减少 CPU 对 I/O 过程的直接参与。
程序查询方式
CPU 通过循环检测设备状态寄存器来判断 I/O 是否完成。
- CPU 全程等待,无法做其他工作
- 适合低速设备、简单嵌入式系统
- CPU 利用率最低
中断驱动方式
设备就绪时主动发出中断请求,CPU 响应中断后再进行数据传输。
- CPU 在 I/O 期间可以执行其他程序
- 数据传输仍然经过 CPU(每传一个字/字节触发一次中断)
- 适合中低速设备
DMA 方式
由 DMA 控制器接管数据传输,直接在设备和主存之间搬运数据,传输完成后向 CPU 发一次中断。
- CPU 只在传输开始和结束时参与
- 以数据块为单位传输,效率高
- 适合高速设备(磁盘、网卡)
通道方式
通道是一个专用的 I/O 处理器,有自己的指令系统(通道指令),可以独立执行 I/O 程序。
- CPU 向通道发出一条启动指令,后续由通道自主完成
- 进一步解放 CPU
- 大型机中常见,微机中较少
演进脉络
| 方式 | CPU 参与程度 | 传输单位 | 数据通路 |
|---|---|---|---|
| 程序查询 | 全程占用 | 字/字节 | 经过 CPU |
| 中断驱动 | 部分占用 | 字/字节 | 经过 CPU |
| DMA | 开始+结束 | 数据块 | 不经过 CPU |
| 通道 | 启动指令 | 一组数据块 | 不经过 CPU |
核心趋势:CPU 的参与越来越少,I/O 操作越来越独立。
I/O 系统的主要性能指标
- 吞吐量(Throughput):单位时间完成的 I/O 操作数
- 响应时间(Response Time):从发出 I/O 请求到完成的时间
- CPU 利用率:CPU 用于执行用户程序(而非等待 I/O)的时间比例
这三者相互关联:I/O 控制方式越先进,CPU 利用率越高,系统吞吐量也越大。
例题
例 1:程序查询方式和中断方式都是以字/字节为单位传输数据的,它们的本质区别是什么?
解:区别在于 CPU 是否需要主动等待。程序查询方式中 CPU 不断轮询设备状态,全程被 I/O 占用;中断方式中 CPU 可以先去执行其他程序,设备就绪后通过中断通知 CPU,CPU 再来处理,I/O 等待期间 CPU 不被浪费。
例 2:为什么 DMA 适合磁盘而不适合键盘?
解:磁盘每次传输大量连续数据(一个扇区 512 B 或更多),DMA 批量搬运效率高。键盘每次只产生 1 个字节,数据量极小且不连续,使用 DMA 的启动开销反而不划算,中断方式足够。
例 3:下列 I/O 控制方式中,数据传输不经过 CPU 的是哪些?
解:DMA 方式和通道方式。这两种方式中,数据直接在设备与主存之间传输,CPU 不参与逐字节的搬运。
考点清单
- I/O 系统 = I/O 硬件(设备 + 接口 + 总线) + I/O 软件
- 四种控制方式:程序查询 → 中断 → DMA → 通道,CPU 参与递减
- 程序查询和中断以字/字节为单位经 CPU 传输,DMA 以块为单位不经 CPU
- 程序查询 CPU 利用率最低,通道方式 CPU 利用率最高
- 设备速度差异是 I/O 系统设计的核心矛盾