首页/操作系统/操作系统概述/中断与异常处理 🔗 在 Obsidian 中打开
操作系统 · 操作系统概述

中断与异常处理

重要度 ★★★★★ 中断异常陷入中断处理
速查
中断:来自 CPU 外部异步事件(I/O 完成、时钟);异常:来自 CPU 内部同步事件(除零、缺页)。处理流程:关中断→保存现场→识别→执行服务→恢复→开中断

基本概念

中断和异常是操作系统获得 CPU 控制权的基本机制。没有中断,OS 就无法实现进程切换、I/O 管理等核心功能。

类别来源同步/异步说明
中断(外中断)CPU 外部异步与当前执行的指令无关,随时可能发生
异常(内中断)CPU 内部同步由当前执行的指令引起
陷入(Trap)程序主动同步有意触发,如系统调用
CPU 控制流被剥夺的两大类事件 中断(外中断) 外部 · 异步 · 可屏蔽中断(I/O) · 不可屏蔽中断(NMI) 如硬件故障 异常(内中断) 内部 · 同步 · 故障 Fault(可恢复) · 陷阱 Trap(有意触发) · 终止 Abort(不可恢复)
图:中断来自外部(异步),异常来自内部(同步);异常又分为故障、陷阱、终止。
三态细分故障(Fault)可恢复,处理后重新执行该指令(如缺页);陷阱(Trap)执行下一条指令(如系统调用);终止(Abort)不可恢复(如硬件故障)。

中断处理流程

  1. 关中断:防止新的中断打断当前处理
  2. 保存断点和现场:保存 PC(断点)和 PSW 到栈或寄存器
  3. 识别中断源:通过中断向量号找到中断服务程序入口
  4. 执行中断服务程序:处理具体的中断事件
  5. 恢复现场:从栈中恢复 PC 和 PSW
  6. 开中断:允许新的中断
① 关中断CLI ② 保存现场PC/PSW ③ 识别源向量号 ④ 执行服务ISR ⑤ 恢复现场出栈 ⑥ 开中断STI
点击「下一步」逐步查看中断处理流程

分类与关键性质

类型来源同步/异步可否屏蔽示例
可屏蔽中断外设异步可以I/O 完成、时钟中断
不可屏蔽中断硬件异步不可以内存校验错误、电源掉电
故障 Fault指令同步缺页异常、段错误
陷阱 Trap程序主动同步系统调用、断点
终止 Abort硬件同步硬件故障
中断向量中断向量是中断服务程序的入口地址,中断号是索引中断向量表的编号——二者不是一回事。

常见考法

考法解题套路
区分中断和异常中断来自外部(异步),异常来自内部(同步)
处理流程排序关中断→保存现场→识别→执行服务→恢复→开中断
故障 vs 陷阱 vs 终止故障可恢复重执行,陷阱执行下一条,终止不可恢复
中断向量表表中每项是中断服务程序的入口地址,由中断向量号索引
中断嵌套保存现场后可开中断,允许更高优先级中断

易错点

必记
  1. 中断 $\neq$ 异常:中断来自外部(异步),异常来自内部(同步)。408 常考辨析。
  2. 系统调用是 Trap(陷阱),通过陷入指令主动触发,属异常而非中断。
  3. 缺页异常是 Fault,处理后重新执行触发缺页的那条指令。
  4. 关中断时机:保存现场期间必须关中断,防止现场被破坏;保存完毕后可开中断。
  5. 中断向量 $\neq$ 中断号:向量是入口地址,号是索引表的编号。

记忆卡片

中断和异常的根本区别?
中断来自外部(异步),异常来自内部(同步)。
系统调用属于什么?
陷阱(Trap),即程序主动触发的异常。
缺页异常处理后执行哪条?
重新执行触发缺页的那条指令(Fault)。
中断处理第一步?
关中断。
中断向量表存什么?
中断服务程序的入口地址。
三种异常类型?
故障(可恢复)、陷阱(有意触发)、终止(不可恢复)。

交互动画 · 中断与异常的分类判定树

手动模式
事件发生 I/O 完成 · 时钟 · 除零 · 缺页 · 系统调用 · 掉电 来自 CPU 外部? 外中断(中断)异步 · 与当前指令无关 内中断(异常)同步 · 由当前指令引起 可屏蔽中断:I/O 完成 · 时钟 不可屏蔽中断 NMI:掉电 · 校验错 Fault 故障:缺页 · 除零 Trap 陷阱:系统调用 · 断点 Abort 终止:硬件错误 · 不可恢复
外部 → 外中断(异步)│ 内部 → 内中断(同步)= Fault / Trap / Abort
点击「播放」或「下一步」,沿着判定树给每个事件归类
Fault 处理后重执行原指令;Trap 执行下一条;Abort 不可恢复
变量配色:外中断支路 · 异常支路 · 判定条件高亮时看清分支依据。

相关知识点

system-call program-linking-and-loading interrupt-response-process

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。