附录6 中断
中断
1 中断定义
广义和狭义
- 广义:程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程。
- 操作系统是“中断驱动”的,中断是激活操作系统的唯一方式。
- 狭义:处理器之外的中断事件,与当前运行指令无关的中断事件。I/O中断、时钟中断、外部信号中断。
2 中断分类
外中断
- 由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。
内中断
- 异常中断。由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。
- 陷入中断。在用户程序中使用系统调用。
3 中断事件
中断来源
由处理器、内存储器、总线等硬件故障引起
由处理器执行机器指令引起。
- 除数为0,操作数溢出等算术异常:简单处理,报告用户;由用户编写中断续元程序处理
- 非法程序、用户态使用特权指令、地址越界、非法存取等指令异常:终止程序
- 终止进程指令:终止进程
- 虚拟地址异常:调整内存后重新执行指令
处理器执行陷入指令请求OS服务引起的;在操作系统中,它一般又被称作系统调用
- 请求分配外设、请求I/O等等
- 处理流程:陷入OS,保护现场,根据功能号查入口地址,跳转具体处理程序
来源于外围设备报告I/O状态的中断
- I/O完成:调整进程状态,释放等待进程
- I/O出错:等待人工干预
- I/O异常:等待人工干预
由外围设备发出的信号引起的中断事件
- 时钟中断、间断时钟中断:记时与时间片处理
- 设备报到与结束中断:调整设备表
- 键盘/鼠标信号中断:根据信号作出相应反应
- 关机/重启动中断:写回文件,停止设备与CPU
中断产生过程
- 发现中断源,提出中断请求
- 发现中断寄存器中记录的中断
- 决定这些中断是否应该屏蔽
- 当有多个要响应的中断源时,根据规定的优先级选择一个
- 中断当前程序的执行
- 保存当前程序的PSW/PC到核心栈
- 转向操作系统的中断处理程序
4 中断处理
处理原则
- 保护现场
- 停止设备
- 停止CPU
- 向操作员报告
- 等待人工干预
中断处理程序
- 操作系统处理中断事件的控制程序,主要任务是处理中断事件和恢复正常操作
中断处理过程
- 保护未被硬件保护的处理器状态
- 通过分被中断进程的PSW中断码字段,识别中断源
- 分别处理发生的中断事件
- 恢复正常操作
- 对于某些中断,在处理完毕后,直接返回刚刚被中断的进程
- 对于其他一些中断,需要中断当前进程的运行,调整进程队列,启动进程调度,选择下一个执行的进程并恢复其执行
中断屏蔽
- 当计算机检测到中断时,中断装置通过中断屏蔽位决定是否响应已发送的中断
- 有选择的响应中断。信号量控制访问临界区的时候,会屏蔽中断。
中断优先级
- 当计算机同时检测到多个中断时,中断装置响应中断的顺序
- 有优先度的响应中断
- 一种可能的处理次序
- 处理机硬件故障中断事件、自愿性中断事件、程序性中断事件、时钟中断等外部中断事件、输入输出中断事件、重启动和关机中断事件
- 不同类型的操作系统有不同的中断优先级
中断的嵌套处理
- 当计算机响应中断后,在中断处理过程中,可以再响应其他中断
- 操作系统是性能攸关程序系统,且中断响应处理有硬件要求,考虑系统效率和实现代价问题,中断的嵌套处理应限制在一定层数内,如三层
- 中断的嵌套处理改变中断处理次序,先响应的有可能后处理
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!










