【王道考研】中断和异常
1.5 中断和异常
知识来源: B站王道考研
中断机制的诞生
发明操作系统引入中断机制,实现了多道程序并发执行。
本质: 发生中断就意味着需要操作系统接入,开展管理工作。
1、当中断发生时,CPU立即进入核心态。
2、当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理。
3、对于不同的中断信号,会进行不同的处理。
发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作需要使用特权指令,因此CPU要从用户态转核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。
用户态、核心态之间的切换使怎么实现的?
答 : “用户态 -->核心态”是通过中断实现的。并且中断是唯一途径。
“核心态 -->用户态”的切换是通过执行一个特权指令,将程序状态字的标志为设置为“用户态”。
中断分类
内中断(异常、例外、陷入):
信号来源:CPU内部,与当前执行的指令有关。
自愿中断–指令中断:系统调用时使用的访管指令(陷入指令、trap指令。)
硬件故障:缺页
软件中断:整数除0
外中断:信号来源CPU外部,与当前执行的指令无关。
外设请求:I/O操作完成发出的中断信号。
人工干预:用户强行终止一个进程。
陷阱、陷入(trap): 有意而为之的异常,如系统调用。
故障(fault):由错误条件引起的,可能被故障处理程序修复,如缺页。
终止(abort):不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整数除0。
外中断处理过程
step1:执行完每个指令之后,CPU都要检查当前是否有外部中断信号。
step2:如果检测到外部中断信号,则需要保护被中断经常的CPU环境(如程序状态字PSW、程序计数器PC、各种通用寄存器)
step3:根据中断信号类型转入相应的中断处理程序。
step4:恢复原进程的CPU环境退出中断,返回源程序继续向下执行。