含义与区别

二者本质都是打断正常程序流,直观感觉是 “程序被打断、流程被破坏”,但操作系统能稳定运行、现代计算机能高效工作,恰恰高度依赖中断和异常,利远大于弊。

特性 中断 (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从用户态切换到内核态唯一途径。这像一扇严格控制的“门”,确保了用户程序无法随意进入高权限的内核态,保障了系统安全。

  • 响应外部世界:中断让计算机能及时响应键盘输入、网络数据等外部事件,使系统变得“灵敏”。

处理

  1. CPU响应:暂停当前程序。

  2. 保护现场:保存当前程序的执行状态(如程序计数器PC、寄存器等),以便日后恢复。

  3. 查询向量表:根据中断或异常的类型号,在中断向量表(Interrupt Vector Table)中找到对应的处理程序入口地址。

  4. 执行处理程序:跳转到该地址执行相应的处理代码。

  5. 恢复现场:处理完成后,恢复之前保存的程序状态。

  6. 返回:回到被中断的程序继续执行

Logo

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

更多推荐