Appearance
题目
下列关于中断 I/O 方式的叙述中,不正确的是( )。
错因
A
A 是正确叙述。键盘输入间隔以毫秒甚至秒计、针式打印机字符级动作慢——这些慢速字符型设备用中断方式恰好合适:CPU 不用轮询,外设准备好后中断 CPU,由 CPU 在中断服务程序里搬一个字符即可。把 A 当作错误大概是把"中断方式 = 高速 I/O"想反了——高速大批量数据反而要用 DMA 或通道。
B
B 是正确叙述。中断方式下,CPU 接到中断信号后转去执行中断服务程序(软件)——程序里用 IN / OUT 之类的 I/O 指令在 CPU 寄存器和 I/O 接口之间搬数据,再由 CPU 写入主存。整个搬运过程是软件完成的(与 DMA 由硬件直接搬运形成对比)。把 B 当错的人可能误以为"中断 = 硬件搬运"。
D
D 是正确叙述——这正是中断方式相对于程序查询方式最大的优势:外设准备数据期间 CPU 解放出来跑其他进程,等外设好了再被中断打断处理。把 D 当错的人混淆了"中断方式"和"程序查询方式"——后者才是 CPU 死等的方式。
总解析
题面问"不正确的"。逐项判定:
| 选项 | 内容 | 判定 | 关键点 |
|---|---|---|---|
| A | 适用键盘 / 针打等字符型设备 | 正确 | 慢速字符型设备的典型应用场景 |
| B | 外设 ↔ 主机数据通过软件传送 | 正确 | 中断服务程序 = 软件 |
| C | 外设准备数据时间 小于中断处理时间 | 错误 | 应该是大于 |
| D | 准备数据期间 CPU 可跑其他进程 | 正确 | 中断方式相对于程序查询的核心优势 |
为什么 C 错——准备时间必须大于中断处理时间:
中断方式下,外设每"准备好一次数据"就发一次中断,CPU 跑一次中断服务程序处理它。如果准备时间 < 处理时间:
- CPU 还没处理完上一次中断,外设又准备好了
- 中断请求堆积、丢失,导致数据来不及取走或中断丢失
- 工作流程实际上变成 CPU 全力处理中断、来不及做其他事——还不如改用 DMA
只有外设准备数据时间 ≫ CPU 中断处理时间(即慢速外设 + 短中断处理)时,中断方式才让 CPU 在准备期间有富余时间跑别的任务。这正是它适合慢速字符型设备的根本原因。
故 C 错误——不等式反了。
最终答案是 C。
4 种 I/O 方式 速查:
| 方式 | 适用场景 | CPU 介入程度 | 是否需要中断 |
|---|---|---|---|
| 程序查询 | 简单慢速 I/O | 全程 CPU 死等 | 不需要 |
| 中断方式 | 慢速字符型设备 | 仅在中断时介入 | ✓ |
| DMA | 高速块设备(磁盘) | 仅初始化和结束时介入 | ✓(仅完成时) |
| 通道 | 大型机、IBM 类 | 几乎不介入 | ✓(仅完成时) |
中断 I/O 工作前提(一定要满足):
不满足这条 → 中断会丢、CPU 反而被拖累 → 应升级到 DMA。