Appearance
题目
下列与中断相关的操作中,由操作系统完成的是()。
Ⅰ、保存被中断程序的中断点
Ⅱ、提供中断服务
Ⅲ、初始化中断向量表
Ⅳ、保存中断屏蔽字
错因
A
把"保存中断点"想成了 OS 软件干的活——觉得"保存现场"嘛,肯定是中断处理程序写代码做的。但保存中断点这一步发生得比中断处理程序还早:CPU 一识别到中断信号,就由中断隐指令自动把当前 PC 压栈、把 PSW 切到内核态,等 OS 的中断处理程序拿到执行权时,PC 早就保好了。这是硬件做的事,不归 OS。
B
漏选了 Ⅲ 和 Ⅳ,可能觉得中断向量表和屏蔽字都是硬件相关的"开机自带"。但向量表的具体内容(每个中断号对应的处理程序入口)是 OS 启动时按自己实现的中断处理程序填进去的;屏蔽字也是 OS 在中断处理过程中根据中断优先级动态设置的——两者都需要 OS 知道"我有哪些中断处理程序、它们的相对优先级",硬件做不了这件事。
C
走了另一个极端:以为 OS 只管中断向量表和屏蔽字这种"配置类"工作,具体的中断服务(Ⅱ)误归给了硬件。但"提供中断服务"指的就是中断处理程序本身——读设备状态、搬数据、唤醒等待进程——全是 OS 软件代码。硬件只负责检测中断、跳转到向量表里登记的入口,剩下的服务流程都得 OS 自己写。
总解析
中断处理流程里"硬件做什么、OS 做什么"的划分是高频考点。关键看动作发生的时机:
| 步骤 | 操作 | 谁做 |
|---|---|---|
| ① 中断响应 | 保存中断点(PC 入栈、PSW 切内核态) | 硬件(中断隐指令) |
| ② 跳转入口 | 按中断号查向量表,跳到入口 | 硬件 |
| ③ 进入处理 | 保存通用寄存器、保存中断屏蔽字 | OS(中断处理程序) |
| ④ 提供服务 | 读设备状态、搬数据、唤醒进程等 | OS |
| ⑤ 恢复返回 | 恢复屏蔽字、恢复寄存器、IRET 返回 | OS + 硬件 |
| 系统初始化 | 填中断向量表(写各中断处理程序入口地址) | OS(开机时) |
逐个判:
- Ⅰ 保存中断点:中断隐指令做的,硬件 → 不归 OS
- Ⅱ 提供中断服务:中断处理程序就是 OS 代码 → OS ✓
- Ⅲ 初始化中断向量表:硬件不知道"该跳到哪个 OS 函数",OS 启动时填表 → OS ✓
- Ⅳ 保存中断屏蔽字:进入处理程序后由 OS 软件保存(栈上压一份),出来时再恢复 → OS ✓
只 Ⅰ 不是 OS 做的,剩下三个都是。
最终答案是 D。