答:以下四种情况发生时,会中断CPU正在运行的程序,转到其他相应的处理过程去执行。
(1)在程序执行过程中,若外设完成任务或发生某些特殊事件(如:打印机缺纸、定时采样计数时间到、键盘缓冲满等),会向CPU发中断请求,要求CPU对这些情况进行处理。处理完后,回到原被中断的断点处继续执行。这种情况,称为I/O中断,或外中断,特指由CPU外部的设备向CPU发的中断请求。
(2)在执行某条指令时,可能发生一些特殊的“异常事件”,如:缺页、溢出、除数为0、非法操作码等,使当前指令无法继续执行。此时也要求CPU中止原程序的执行,转到处理相应情况的程序去执行,处理完后,再回到发生异常的指令继续执行。这种情况,称为失效或故障(fault),是由正在执行的指令产生的。
(3)还有一类是人为设定的事件,在程序中事先设定一条特殊的指令,通过执行这条特殊指令,自动中止正在执行的原程序,转到一个特定的内核管理程序去执行,执行完后,回到那条特殊指令后面的一条指令开始执行。称为自愿中断或自陷(Trap)。这条特殊的指令称为
“访管指令”(访问管理程序)或“自陷指令”(自动调入陷阱),如80x86中的指令“INT n”。
(4)还有一种情况,既不是外部设备发出,也不是指令本身产生,是在执行指令过程中发生了硬件故障,如,电源掉电,线路故障等,无法继续执行。这类异常是随机发生的,对引起异常的指令的确切位置无法确定,出现这类严重错误时,原程序无法继续执行,只好终止,而由中断服务程序重新启动操作系统。因此这种情况被称为终止(Abort)。
综上所述,上述四种中断源(异常事件)分为两大类:第一种称为外中断(有时简称为中断Interrupt),后面三种称为内中断 ( 也称为异常、程序性中断,或软中断),分别为故障(fault)、自陷(Trap)和终止(Abort)。内中断是在执行特定的指令时发生的,不需要通过外部中断请求线进行中断请求。
|