5-中断和异常
中断和异常
本质
发生中断就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(如进程切换,分配I/O设备等)需要使用特权指令,所以需要CPU由用户态切换到核心态。中断可以使CPU从用户态切换到核心态,是操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行
概念
- 中断发生时,CPU立即进入核心态
- 中断发生后,当前进程暂停运行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理
用户态切换到核心态是通过中断实现的,并且中断是唯一的实现方式
核心态到用户态的切换只需要执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”即可
中断的分类
内中断
也称为异常,例外,陷入
信号来源:CPU内部,与当前执行的指令有关
内中断还细分为
- 自愿中断:指令中断,如系统调用时的访管指令(陷入指令,trap指令)
- 强迫中断:硬件故障(如缺页中断),软件中断(如除0)
内中断另一种分类方式:
- 陷阱,陷入(trap):有意而为之的异常,如系统调用
- 故障(fault):由错误条件引起的,可能被故障处理程序修复,如缺页
- 终止(abort):不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整数除0操作
外中断
也称为中断(狭义上的中断)
信号来源:CPU内部,与当前执行的指令无关
外中断还可以分为
- 外设请求:如I/O操作完成发出的中断信号
- 人工干预:如用户强行停止一个进程
外中断处理过程
- CPU在用户态下逐条执行指令,在每条指令执行结束后进行检查,检查当前是否有外部中断信号
- 如果检测到外部中断信号在,则需要保护被中断进程的CPU环境(如程序状态字PSW,程序计数器PC,各种通用寄存器)
- 根据中断信号类型转入响应的中断处理程序(在核心态下)
- 恢复原进程的CPU环境并退出中断,返回原进程继续向下执行指令
总结
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment