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 禁止 |
考研高频考点
- 🔥🔥🔥 中断/异常的分类(外中断 vs 内中断,Trap/Fault/Abort)
- 🔥🔥🔥 中断处理流程(硬件完成 vs 软件完成的分界)
- 🔥🔥🔥 缺页异常属于 Fault(修复后重新执行当前指令)
- 🔥🔥 中断是 OS 获取 CPU 控制权的唯一途径
- 🔥🔥 中断向量 = 中断处理程序的入口地址
- 🔥 可屏蔽中断 vs 不可屏蔽中断
中断机制让 OS 能夺回 CPU 控制权,而用户程序主动请求 OS 服务的方式就是系统调用——下一篇详解系统调用的概念和执行流程。