定义
- 指系统发生某个异步/同步事件后,处理机暂停正在执行的程序,转去执行处理该事件程序的过程。
引入目的
- 开发 CPU 与通道(或设备)之间的并行操作
- 实现 I/O 完成后通知 CPU(CPU 无需轮询等待)
广义中断分类
外中断(狭义中断)
- 由硬件逻辑产生,与当前执行指令无关
- 可屏蔽
- 典型:I/O 完成中断、时钟中断、设备故障中断
内中断(异常/例外)
- 来源于当前运行的程序,与当前指令有关
- 不可屏蔽
- 典型:
- trap 指令(陷入指令):程序主动触发,用于实现系统调用
- 缺页异常(Page Fault):访问的页面不在内存,需从外存调入
- 除零、越界访问等非法指令
- debug 断点
中断的分级
中断/异常处理流程
- 保存现场(Save Context):暂停当前程序,保存 CPU 寄存器、程序计数器等现场信息
- 分析原因:判断中断/异常类型,找到对应的处理程序入口
- 处理(Handle):执行中断/异常处理子程序
- 恢复现场(Restore Context):恢复之前保存的现场,返回被中断程序继续执行
作用
- 是 CPU 与 I/O 设备并行工作的基础(CPU 无需等待慢速 I/O,完成时由中断通知)
- 驱动内核执行——内核是中断驱动的,需中断/异常激发内核代码运行
- trap 指令实现用户态到核心态的切换,是② OS 功能在用户进程内执行的模型的触发机制
- 实现并发和 I/O 操作的基础
中断/异常处理示例
- 缺页异常:程序访问虚拟地址 → 硬件发现页表合法位=0 → 产生缺页异常 → CPU 切换至核心态 → OS 缺页处理程序从外存调入页面 → 更新页表 → 恢复现场继续执行
- 系统调用:用户程序执行 trap 指令 → 软件触发异常 → CPU 切至核心态 → 按系统调用号分发执行 → 返回用户态