操作系统——中断 (Interrupt) 与 异常 (Exception)
含义与区别
二者本质都是打断正常程序流,直观感觉是 “程序被打断、流程被破坏”,但操作系统能稳定运行、现代计算机能高效工作,恰恰高度依赖中断和异常,利远大于弊。
| 特性 | 中断 (Interrupt) | 异常 (Exception) |
|---|---|---|
| 别名 | 外中断 | 内中断、陷阱(Trap)、故障(Fault) |
| 来源 | CPU外部的硬件设备(如键盘、网卡、时钟) | CPU内部,由正在执行的指令引发 |
| 触发方式 |
异步Asynchronous 事件由外部硬件随机触发,与当前指令流无关,所以发生时间不可预知。 |
同步Synchronous 事件由当前执行的指令直接引发,因此发生在特定指令的执行时刻。 |
| 与当前指令关系 | 无关,是外部事件 | 相关,是执行指令的直接后果 |
| 可否屏蔽 | 大部分可以(可屏蔽中断) | 通常不可屏蔽,必须立即处理 |
| 典型例子 | 键盘输入、网卡数据到达、时钟中断 | 除零错误、缺页异常、非法操作码、系统调用 |
同步Asynchronous vs 异步Synchronous
| 讨论场景 | 同步的核心意思 | 异步的核心意思 |
|---|---|---|
| 中断/异常 | 源于内部指令,必现 | 源于外部硬件,随机 |
| I/O操作 | 调用阻塞等待完成,主动等结果 | 调用立即返回,事后通知 |
| 进程通信 | 收发双方必须同时参与/等待 | 收发双方互不等待 |
| 信号处理 | 自身指令当场引发 | 外部随时发来 |
分类
中断(Interrupt)—— 异步事件(外部硬件突发)
- 可屏蔽中断:由I/O设备发出(如键盘、鼠标、网卡)。CPU可以通过关中断指令(
CLI)暂时不理睬。 - 不可屏蔽中断(NMI):用于致命硬件错误(如内存校验错误),CPU必须立即处理,无法屏蔽。
异常(Exception)—— 同步事件(内部指令执行引发)
-
故障(Fault):可恢复的错误。如缺页异常(缺页后操作系统把数据调入内存,指令重新执行)。
-
陷阱(Trap):主动触发,用于系统调用(如
int 0x80或syscall指令),是用户态进入内核态的“大门”。特意设计的指令 -
终止(Abort):严重不可恢复错误(如硬件故障),操作系统直接杀死进程。
意义
-
实现并发:没有中断机制,CPU会一直运行一个程序直到结束,无法实现多道程序的并发执行。
-
唯一“进门”方式:中断和异常是CPU从用户态切换到内核态的唯一途径。这像一扇严格控制的“门”,确保了用户程序无法随意进入高权限的内核态,保障了系统安全。
-
响应外部世界:中断让计算机能及时响应键盘输入、网络数据等外部事件,使系统变得“灵敏”。
处理
-
CPU响应:暂停当前程序。
-
保护现场:保存当前程序的执行状态(如程序计数器PC、寄存器等),以便日后恢复。
-
查询向量表:根据中断或异常的类型号,在中断向量表(Interrupt Vector Table)中找到对应的处理程序入口地址。
-
执行处理程序:跳转到该地址执行相应的处理代码。
-
恢复现场:处理完成后,恢复之前保存的程序状态。
-
返回:回到被中断的程序继续执行

(
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)