Appearance
I/O控制方式
考情分析
四种 I/O 控制方式的对比是选择题高频考点,DMA 的工作原理尤其常考。🔥🔥🔥 高频核心。
CPU 速度是磁盘的十万倍——如果每次读写都让 CPU 干等,整台机器的性能就被最慢的设备拖垮了。
四种 I/O 控制方式的演进
I/O 控制方式的发展方向:减少 CPU 对 I/O 操作的干预,让 CPU 可以做更有价值的工作。
1. 程序直接控制方式(轮询/查询)
| 特点 | 说明 |
|---|---|
| CPU 参与 | CPU 全程忙等,不断查询状态 |
| 数据传输单位 | 字(一次一个字) |
| 优点 | 实现简单 |
| 缺点 | CPU 利用率极低(CPU 99% 时间在轮询) |
2. 中断驱动方式
| 特点 | 说明 |
|---|---|
| CPU 参与 | 发出命令后可做其他事,中断时才处理 I/O |
| 数据传输单位 | 字 |
| 优点 | CPU 利用率提高(不再忙等) |
| 缺点 | 每传一个字都要中断一次,频繁中断开销大 |
3. DMA 方式
DMA(Direct Memory Access,直接存储器存取):由 DMA 控制器直接控制数据在内存和设备之间传输,不需要 CPU 逐字干预。DMA 就像你雇了个搬家工人——你只需说"把客厅的箱子搬到卡车上",然后自己去做别的事,搬完他会通知你。
| 特点 | 说明 |
|---|---|
| CPU 参与 | 只在传输开始和结束时介入 |
| 数据传输单位 | 块 |
| 优点 | CPU 利用率高,适合高速设备 |
| 缺点 | 每次只能传一个连续的数据块到连续内存 |
DMA 控制器的组成
| 寄存器 | 功能 |
|---|---|
| 内存地址寄存器(MAR) | 数据在内存中的起始地址 |
| 数据计数器(DC) | 剩余要传输的字节数 |
| 数据缓冲寄存器(DR) | 暂存正在传输的数据 |
| 命令/状态寄存器 | 控制 DMA 操作 / 报告状态 |
4. 通道控制方式
通道是一个专用 I/O 处理器,可以执行通道程序(一组 I/O 指令),独立于 CPU 完成 I/O。
| 特点 | 说明 |
|---|---|
| CPU 参与 | 只需发出"启动通道"指令,通道自行完成 |
| 数据传输单位 | 一组块 |
| 优点 | 一次可完成多个数据块的传输,甚至涉及不连续内存 |
| 缺点 | 通道硬件昂贵 |
四种方式的对比
| 比较 | 程序直接控制 | 中断驱动 | DMA | 通道 |
|---|---|---|---|---|
| CPU 干预 | 全程干预 | 每个字中断 | 每个块中断 | 每组块中断 |
| 传输单位 | 字 | 字 | 块 | 一组块 |
| 数据流向 | 设备→CPU→内存 | 设备→CPU→内存 | 设备→内存 | 设备→内存 |
| CPU 利用率 | 最低 | 较低 | 较高 | 最高 |
| 响应速度 | 最快 | 较快 | 较慢 | 最慢 |
关键区分
程序直接控制和中断驱动方式,数据都要经过 CPU(设备→CPU 寄存器→内存)。DMA 和通道方式,数据直接在设备和内存之间传输,不经过 CPU。
DMA vs 中断驱动
| 比较 | 中断驱动 | DMA |
|---|---|---|
| CPU 介入频率 | 每个字中断一次 | 每个块中断一次 |
| 数据通路 | 设备→CPU→内存 | 设备→内存(不经 CPU) |
| 适用设备 | 低速设备 | 高速块设备(磁盘) |
考研高频考点
- 🔥🔥🔥 四种 I/O 控制方式的对比(CPU 干预程度/传输单位/数据流向)
- 🔥🔥🔥 DMA 方式中数据不经过 CPU 直接传到内存
- 🔥🔥🔥 中断驱动以字为单位,DMA 以块为单位
- 🔥🔥 DMA 控制器的组成(MAR/DC/DR)
- 🔥 通道是专用的 I/O 处理器
知道了 CPU 与设备之间怎么传数据,接下来该看这些控制逻辑在软件层面是怎么分层组织的——下一篇聊 I/O 软件层次结构。