中断是指CPU在正常运行程序时,由于内部/外部事件(或由程序)引起CPU中断正在运行的程序,而转到为中断事件服务的程序中去,服务完毕,再返回执行原程序的这一过程。简单来说就是停下手中的活先去做另一件事,做完回来再接着干。
常考中断分类和中断处理程序。
一、中断的分类
关于异常和中断,总结如下:
异常(Exception)也称内中断,是指来自CPU执行指令内部的事件,如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件。异常不能被屏蔽,一旦出现,就应立即处理。
异常可分为故障、自陷和终止。故障(Fault)通常是由指令执行引起的异常,如非法操作码、缺页故障、除数为0、运算溢出等。自陷(Trap,又称陷入)是一种事先安排的“异常”事件,用于在用户态下调用操作系统内核程序,如条件陷阱指令、系统调用指令等。终止(Abort)是指出现了使得CPU无法继续执行的硬件故障,如控制器出错、存储器校验错等。
中断(Interruption)也称外中断,是指来自 CPU 执行指令外部的事件,通常用于信息输入/输出,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。
外中断可分为可屏蔽中断和不可屏蔽中断。可屏蔽中断是指通过INTR线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活。不可屏蔽中断是指通过 NMI线发出的中断请求,通常是紧急的硬件故障,如电源掉电等。此外,异常也是不能被屏蔽的。在每种中断的中断处理程序中可以设置它的中断屏蔽字,比它中断处理优先级高的中断设为0,表示不可屏蔽,比它中断处理优先级低的(包括它自身)中断设为1,表示可屏蔽。
故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断。
二、中断处理过程
单级中断下中断的处理流程是:关中断–保存断点–寻找中断服务程序入口(以上由硬件完成)–保护现场和屏蔽字–中断处理–恢复现场–开中断–中断返回(以上由中断服务程序完成),多级中断只需要将中断处理改为:开中断–执行中断服务程序–关中断即可。
写在后面
这个专栏主要是我在学习408真题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!!!
参考资料
[1]王道408教材(2025版)
[2]王道课程资料