Appearance
题目
下列关于多重中断系统的叙述中,错误的是( )。
错因
A
A 是正确叙述。CPU 在每条指令执行完毕进入下一次取指之前的"中断响应周期"才采样中断请求——不会在指令中段响应。原因是只有完整指令边界才能干净地保存断点(PC、PSW),中段响应会导致状态混乱。这是中断响应硬性约束。
C
C 也正确。中断请求来自 CPU 外部(设备 / 时钟 / DMA 完成等),与 CPU 当前正在跑哪条指令完全无关——这是"中断"区别于"异常"的核心特征。异常才与当前指令相关。题面是"多重中断"系统讨论,所谓中断就是外中断,自然与当前指令无关。
D
D 也正确。CPU 在每条指令执行结束时(更精确是"中断响应周期"开始时)采样中断请求引脚——这是"边沿采样 / 电平采样"的标准实现。如果不采样,CPU 根本不知道有中断到来。
总解析
核心矛盾点:B 错在哪
B 说"中断处理期间 CPU 处于关中断状态"——这话对单级中断成立、对多重中断不成立。题面明确说的是"多重中断系统",多重中断的核心特征恰恰是允许嵌套——必须在 ISR 内适当时机开中断让高优先级中断进来。
多重中断的标准时序:
进入 ISR
↓
(硬件已关中断)
↓
保护现场(push 通用寄存器) ← 这段还是关中断的,怕被打断破坏栈
↓
开中断 ← 关键步骤!允许更高优先级的中断打断当前 ISR
↓
执行中断处理逻辑(这段允许嵌套)
↓
关中断 ← 恢复现场前再关一次,怕弹栈过程被打断
↓
恢复现场(pop 通用寄存器)
↓
中断返回(IRET 自动恢复 PSW,包含中断使能位)所以 ISR 期间 CPU 既有关中断阶段也有开中断阶段,并不是"全程关中断"。B 把单级中断的行为套到了多重中断上。
单级 vs 多重中断对照:
| 维度 | 单级中断(不允许嵌套) | 多重中断(允许嵌套) |
|---|---|---|
| 进入 ISR 时 | 硬件关中断 | 硬件关中断 |
| 保护现场时 | 关中断 | 关中断 |
| 处理中段 | 保持关中断 | 必须开中断(允许更高级中断进来) |
| 恢复现场时 | 关中断(隐式) | 关中断 |
| 返回时 | IRET 恢复中断使能位 | IRET 恢复中断使能位 |
| 屏蔽字使用 | 通常无 | 用屏蔽字定义"哪些级别能抢占当前级" |
逐项判定:
| 选项 | 是否成立 | 为什么 |
|---|---|---|
| A 一条指令结束时响应中断 | ✓ | 中断响应必须在指令边界 |
| B 中断处理期间 CPU 关中断 | ✗ | 多重中断要求 ISR 中段开中断以允许嵌套 |
| C 中断请求与当前指令无关 | ✓ | 外中断的固有特性 |
| D CPU 采样中断请求信号检测 | ✓ | 中断响应周期的硬件动作 |
最终答案是 B(这是错误叙述)。
关联题型:2010-21 单级中断 ISR 内顺序、2011-21 多重中断屏蔽字设置——同一系列,三道题串起来看就把"中断响应 + 多重中断 + 屏蔽字"完整闭环。