Appearance
中断和异常的处理
考情分析
中断是操作系统的核心机制,中断的分类和处理流程是选择题高频考点。🔥🔥🔥 高频核心。
CPU 一旦开始执行用户程序就停不下来,操作系统靠什么机制把控制权"抢"回来?
中断的作用
中断是操作系统工作的驱动力。没有中断机制,操作系统无法:
- 从用户态切换到内核态(无法获得 CPU 控制权)
- 实现多道程序并发(无法抢占 CPU)
- 处理 I/O 设备请求
中断的分类
外中断 vs 内中断
| 比较 | 外中断(Interrupt) | 内中断(Exception) |
|---|---|---|
| 来源 | CPU 外部 | CPU 内部(指令执行过程中) |
| 检测时机 | 指令执行完毕后 | 指令执行过程中 |
| 典型来源 | 时钟、I/O 设备 | 非法操作、地址越界、缺页 |
内中断的三种类型
| 类型 | 特点 | 处理方式 | 举例 |
|---|---|---|---|
| 陷入 Trap | 用户有意为之 | 处理后执行下一条指令 | 系统调用 |
| 故障 Fault | 可恢复的错误 | 修复后重新执行引起故障的指令 | 缺页异常 |
| 终止 Abort | 不可恢复的错误 | 终止进程 | 硬件故障、非法指令 |
区分 Trap 和 Fault 的关键
Trap 是主动触发的,返回后执行下一条指令。Fault 是被动发生的错误,修复后重新执行当前指令。
中断处理流程
硬件完成 vs 软件完成
| 阶段 | 由谁完成 | 具体操作 |
|---|---|---|
| 关中断 | 硬件 | 自动设置 IF=0 |
| 保存断点 | 硬件 | 将 PC(和 PSW)压栈 |
| 查向量表 | 硬件 | 根据中断号找到入口地址 |
| 保存/恢复现场 | 软件(OS) | 保存通用寄存器等 |
| 中断处理 | 软件(OS) | 执行具体的处理逻辑 |
中断向量表
中断向量:中断处理程序的入口地址。
中断向量表:按中断号索引的数组,每个表项存放对应中断处理程序的入口地址——类似于急诊分诊台的科室电话簿,拿到编号就能直接找到对应的处理入口。
中断号 → 入口地址
0 → 除零异常处理程序
1 → 调试异常处理程序
...
14 → 缺页异常处理程序
...
32+ → 外设中断处理程序中断屏蔽
| 概念 | 说明 |
|---|---|
| 可屏蔽中断 | 可以通过设置中断屏蔽字来暂时忽略 |
| 不可屏蔽中断 | 无法屏蔽,必须立即处理(如电源故障) |
| IF 标志位 | IF=1 允许响应可屏蔽中断,IF=0 禁止 |
OS 视角 vs CO 视角
中断这个话题在 408 里跨 OS 和组成原理两科出题,侧重点完全不同——选择题里识别考点视角是审题第一步:
| 维度 | OS 视角(本文) | CO 视角(组成原理) |
|---|---|---|
| 关心什么 | OS 如何夺回控制权 + 切换内核态 + 进程切换 | 硬件如何识别中断信号 + 中断隐指令 + 中断优先级判别 |
| 典型题面 | "进程切换由什么触发?" / "缺页异常返回后执行哪条指令?" | "中断隐指令完成哪些操作?" / "硬件中断响应的最后一个动作是?" |
| 典型对象 | 进程、PCB、内核态/用户态、系统调用流程 | 中断屏蔽字、中断优先级电路、向量地址形成、PSW 压栈 |
| 重叠地带 | 中断处理流程的"硬件完成"那 3 步——OS 视角点到即止,CO 视角要深入到时序信号 |
当题面里出现"中断隐指令""中断响应周期""屏蔽字赋值时机"——属 CO 端,请回 co-blog 的 exception-interrupt-co 那篇查;OS 题不会考这些底层细节。
考研高频考点
- 🔥🔥🔥 中断/异常的分类(外中断 vs 内中断,Trap/Fault/Abort)
- 🔥🔥🔥 中断处理流程(硬件完成 vs 软件完成的分界)
- 🔥🔥🔥 缺页异常属于 Fault(修复后重新执行当前指令)
- 🔥🔥 中断是 OS 获取 CPU 控制权的唯一途径
- 🔥🔥 中断向量 = 中断处理程序的入口地址
- 🔥 可屏蔽中断 vs 不可屏蔽中断
中断机制让 OS 能夺回 CPU 控制权,而用户程序主动请求 OS 服务的方式就是系统调用——下一篇详解系统调用的概念和执行流程。