• 内容讲解

程序查询方式要求CPU不断地用指令检测方法来获取外设工作状态,造成CPU的运行效率极低。20世纪50年代中后期中断概念的出现,是计算机系统结构设计中的一项重大变革。

在程序中断方式中,某一外设的数据准备就绪后,它“主动”向CPU发出中断请求信号,请求CPU暂时中断目前正在执行的程序转而进行数据交换;当CPU响应这个中断时,便暂停运行主程序,自动转去执行该设备的中断服务程序;当中断服务程序执行完毕(数据交换结束)后,CPU又回到原来的主程序继续执行。

中断处理示意图如图7-2所示,由图可见,CPU只是在外围设备A、B、C的数据准备就绪后,才去执行对应的中断服务程序,进行数据交换;而当低速的外围设备准备自己的数据时,CPU则照常执行自己的主程序。从这个意义上说,CPU和外设的一些操作是异步并行进行的,因而与串行进行的程序查询方式相比,计算机系统的效率的确是大大提高了。

712.gif

CPU只有在当前一条指令执行完毕后,即转入公操作时,才会受理外围设备的中断请求。

为了在中断服务程序执行完毕以后,能够正确地返回到原来主程序被中断的地方(断点)继续执行,必须把程序计数器PC的内容,以及当前指令执行结束后CPU的状态(包括寄存器的内容和一些状态标志位)都保存到堆栈中去,这些操作称为保存现场;在中断服务程序执行完毕后,需要执行恢复现场操作,从堆栈中恢复PC内容和CPU状态,以便从断点处继续执行主程序。

中断处理过程是由硬件和软件结合来完成的,中断周期由硬件实现,而中断服务程序则由机器指令序列实现。

计算机的中断过程类似于子程序调用,但在本质上又有所区别:子程序的调用是事先安排好的,而中断则是随机产生的;子程序的执行往往与主程序有关,而中断服务程序则可能与主程序毫无关系,比如发生电源掉电等异常情况。