在计算机系统中,中断是指在CPU执行某些任务时,由于某些原因而暂停当前任务,去完成其他任务,等其他任务完成后再回来继续执行之前的任务。这个被打断的任务就是正在执行的“程序”,因此,我们将其称为“程序中断”。
程序中断可以分为软中断和硬中断。其中,软中断是由程序内部自身通过呼叫操作系统功能而产生的;硬中断是由系统外部设备发出的请求,使得CPU向操作系统发出中断信号。
硬中断又可以分为内部中断和外部中断。内部中断是指由CPU内部的故障或异常引起的中断,如除法溢出、地址越界等;外部中断是指由设备发出的中断请求,如定时器、键盘、鼠标等外设。
程序中断虽然打断了正在执行的任务,但是也给计算机系统带来了很多好处。例如:
1、提高CPU利用率。当CPU在等待某个任务完成时,可以去处理其他任务,不仅提高了CPU的使用率,而且使CPU具有了一定程度的并发处理能力。
2、方便程序设计。通过程序中断,可以把程序分成一个个小模块,设计更合理、更易维护。
3、提高系统响应速度。对于某些需要实时响应的任务,程序中断可以保证系统能够即时响应,提高了系统的响应速度。
程序中断的处理过程分为以下几个步骤:
1、当前程序保存。CPU在执行当前程序时,会将当前程序的现场信息(包括现在执行的指令地址、当前正在执行的指令、CPU标志寄存器等内容)保存到内存中的堆栈中。
2、中断服务程序调用。CPU会根据中断源的编号,转到相应的中断服务程序,执行中断服务程序的代码。
3、中断服务程序执行。中断服务程序将任务的处理权交给操作系统,等到操作系统完成后再返回。
4、现场恢复。操作系统完成中断服务程序后,会根据堆栈中保存的信息,恢复当前程序的现场,让其继续执行。