中断与异常
中断有广义和狭义的中断。
广义的中断是操作系统遇到需要处理的中断事件时,中断当前程序的执行,处理相应的中断处理程序,处理完毕后再处理被中断的程序。
狭义中断来源于处理器外的中断,即与当前指令无关的中断事件,例如IO、时钟等事件。这种中断也认为是异步中断,因为它会异步执行操作系统提供的中断回调函数,在中断发生后执行权转为操作系统,由OS的中断装置处理。异步中断不会对原程序的执行产生可见的影响,对被中断程序是透明的。
异常是当前指令引起的中断事件,如地址异常(如页缺失)、算术异常、处理器硬件故障等。
系统异常是执行陷入指令引发的系统中断事件,如请求设备、IO、进程等。
异常又被称为同步中断,它属于程序性中断事件,在解决中断前原程序无法继续执行下去。
中断处理程序
中断处理程序
操作系统处理中断事件的控制程序,主要处理中断事件和恢复正常操作
中断处理过程
- 保护未被硬件保护的寄存器状态
- 分析被中断进程的PSW字段,识别中断源
- 分别处理发生的中断事件
- 恢复正常操作
恢复正常操作
- 对于某些中断,在处理完毕后,直接返回被中断的进程
- 对于其他一些中断,中断当前进程的运行,启动进程调度,切换到别的进程
中断系统处理过程
- 运行进程中发生中断
- 硬件设备发现中断源
- 硬件设置中断码
- 硬件交换新旧PSW
- OS保存现场信息
- OS分析中断源
- OS处理中断事件、调整进程队列、进程调度
- OS恢复现场信息
- 硬件恢复PSW
- 回到某个运行进程
多中断处理
中断屏蔽
中断发生时,中断装置可以通过中断屏蔽来决定是否允许嵌套中断,有选择的响应中断。
中断优先级
OS同时遇到多个中断时,根据优先级选择执行这些中断的顺序,有优先级的响应中断。
中断处理次序
- 中断屏蔽可以使中断装置不响应某些中断
- 中断优先级决定中断装置响应中断的次序
- 中断可以嵌套处理,但嵌套层数有限制
- 中断的嵌套处理改变了中断处理的次序