现代的计算机中都有完善的异常和中断机制,CPU的数据通路中有相应的异常检测和响应逻辑,外设接口中有相应的中断请求和控制逻辑,操作系统中由相应的中断服务程序。这些中断硬件线路和中断服务程序有机结合,共同完成异常和中断的处理过程。
异常和中断的基本概念:
由CPU内部产生的意外被称为异常(内中断),来自CPU外部的设备向CPU发出的中断请求被称为中断。
异常是CPU执行一条指令,由CPU在其内部检测到的与正在执行的指令相关的同步操作。
中断是一种典型由外部设备触发的与正在执行的指令无关的异步事件。
异常和中断的分类:
1.异常的分类:
异常是由CPU内部产生的意外事件,分为硬故障中断和程序性异常。
硬故障中断是由硬件连线出现异常引起的。
程序性异常也软件中断,是指在CPU内部因执行指令而引起的异常事件。
1)故障:指引起故障的指令启动后,执行结束前被检测到的异常事件。例如“缺段”,“缺页”,“非法操作码”,“除数为零”
2)自陷:自陷也称陷阱或陷入,它是预先安排的一种异常事件,例如用于程序调试“断点设置”和单步跟踪的功能就是通过陷阱机制实现的。
3)终止:如果正在执行的指令的过程中发生了使计算机无法继续执行的硬件故障,那么程序无法继续执行,只能终止,此时调出中断服务程序来重启系统。
2.中断的分类:
中断是来自CPU外部的,与CPU执行指令无关的事件引起的中断。CPU每执行完一条指令就检查中断请求信号线,如果检测到中断请求,则进入中断响应周期。
1)可屏蔽中断:指通过可屏蔽中断请求线INTR向CPU发出中断请求,CPU可以通过在中断控制器中设置响应的屏蔽字来屏蔽他或不屏蔽他,被屏蔽的中断请求将不被送至CPU。
2)不可屏蔽中断:指通过专门的不可屏蔽请求线NMI向CPU发出的中断请求,通常是非常紧急的硬件故障。
中断和异常的响应过程:
1)关中断
2)保存断点和程序状态
3)识别异常和中断并转到相应的处理程序
整个响应的过程是不可被打断的,整个中断处理过程是由软/硬件协同完成的