Appearance
题目
下列是关于多重中断系统中 CPU 响应中断的叙述,其中错误的是( )。
错因
B
B 是正确叙述。"中断响应周期"是 CPU 检测到中断请求之后才进入的特殊机器周期——里面执行隐指令做关中断、保断点、送入口三件事。没有请求就不会进入,这是因果关系。
C
C 也正确。进入中断响应周期意味着 CPU 已经决定响应这个中断——前提之一就是中断使能位 IF = 1(开中断态)。如果 IF = 0,CPU 即便发现中断请求也会按下不响应,不会进入响应周期。详见 2018-22。
D
D 也正确。CPU 实际"检测到"的中断请求信号,是经过屏蔽逻辑过滤后的——被屏蔽掉的请求根本不会到达 CPU 的请求线上。所以"CPU 检测到中断请求"等价于"存在未被屏蔽的中断请求",反过来也成立。
总解析
A 错在哪——"仅在用户态"是关键陷阱
多重中断系统的核心特征就是允许嵌套:当 CPU 正在处理某个中断的 ISR 时(此时处于内核态),更高优先级的中断仍然可以打断它。
- 用户态正在跑 → 来中断 → 切到内核态跑 ISR1
- 内核态在跑 ISR1 → 来更高优先级中断 → 嵌套切到 ISR2(仍在内核态,但中断照常响应)
- ISR2 跑完 → 返回 ISR1 → ISR1 跑完 → 返回用户态
如果限定"仅用户态才能响应中断",那么 ISR1 跑的时候根本无法被打断——这就退化成了单级中断,违背了"多重中断"的定义。
多重中断响应不挑 CPU 工作模式:用户态下能响应、内核态下也能响应。决定能否响应的是:
- 存在中断请求(外部硬件信号已送达)
- 请求未被屏蔽(屏蔽字对应位 = 0)
- 中断使能位 IF = 1(开中断态)
CPU 处于"用户态"还是"内核态"与中断响应无关——这是 OS 的概念(保护级别),中断响应是 CPU 硬件层面的事。
逐项审计:
| 选项 | 说法 | 对/错 | 关键判据 |
|---|---|---|---|
| A | 仅用户态可响应中断 | ✗ | 内核态(ISR 中段开中断后)也能响应,多重中断的核心 |
| B | CPU 检测到请求后才进入响应周期 | ✓ | 因果关系 |
| C | 进入响应周期时 CPU 处于开中断态 | ✓ | IF = 1 是响应前提 |
| D | 检测到请求 → 必有未屏蔽的请求 | ✓ | 屏蔽掉的根本到不了 CPU |
用户态/内核态 与 中断响应的关系(澄清):
| 维度 | 用户态 | 内核态 |
|---|---|---|
| 谁在跑 | 用户程序 | OS 代码 / ISR |
| 能否响应外部中断 | 能 | 能(多重中断时) |
| 能否执行特权指令 | 不能 | 能 |
| 与中断响应的关系 | 无直接因果——中断响应看 IF,不看 PSW 模式位 |
最终答案是 A(这是错误叙述)。
易错点速记:
- 看到"仅…才"这种绝对化措辞 → 优先怀疑
- 看到"用户态/内核态才能 X"——除非 X 明确是特权指令 / OS 操作,否则多半错
- 多重中断的本质是"嵌套",所以任何"不能嵌套"的描述(关中断、单一态响应、按到达顺序…)都是错的方向