中断现场的保存和恢复分别是中断处理机过程开始和结束时必须执行的步骤。现场信息可分为三类:
  第一类,主要指程序计数器PC中的内容,它必须由硬件来完成保存,可以保存到主存储器的固定单元中,也可以压入系统堆栈。在中断服务程序结束前,通过执行一条中断返回指令来恢复。如果采用保存到主存储器固定单元中的办法,则在发生中断嵌套时,要通过程序来进行处理。
  第二类,是指记录当前程序状态的有关信息,包括处理机状态字、堆栈指针、基址寄存器、中断屏蔽码等。这些信息是与当前正在运行的程序相关的,在转入中断服务程序后,这些信息必然要被破坏,因此必须加以保存。在图7.3中把这些信息称为硬件现场。为了缩短中断响应时间,许多机器采用硬件来保存这些信息。具体方法由如下三种:

  1.保存到主存储器的固定区域中
  这种方法的缺点是:在发生中断嵌套时,要通过中断服务程序来进行处理,通常是搬到主存储器的另一个区域中,或者暂时存放在通用寄存器中。如果这个中断服务程序是为最高优先级的中断源服务的,则可以不处理这些信息的保存工作。

  2.压入系统堆栈
  在有堆栈的计算机系统中,大多数均采用这种方法。

  3.交换处理机状态字
  在IBM 370系列机中,把与当前运行的程序有关的全部信息都存放在一个64位的处理机状态字中。在主存储器的固定区域中为每一类中断源开辟出两个64位的存储区域,其中一个用来存放将要执行的中断服务程序的状态字,另外一个则存放当前程序的处理机状态字。通过交换处理机状态字来实现现场的保存和恢复,其中还包括程序计数器PC。
当然,如果为了节省硬件,这些与当前运行程序有关的硬件现场也可以采用软件在中断服务程序中加以保存和恢复。
  第三类,是指在中断服务程序中将要被破坏的通用寄存器中内容。在图7.3中,把它称为软件现场。对于软件现场,大多数机器都采用软件来保存和恢复,即在中断服务程序的开始保存在中断服务程序中将要用到的那些通用寄存器中的内容,在中断服务程序结束前恢复这些通用寄存器中的内容。

  为了缩短保存和恢复软件现场的所用的时间,在一般处理机中都设置有成组传送指令,可以用一条指令完成保存或恢复所有通用寄存器中内容的工作。在第三章中曾经介绍过这类指令。
  也有些处理机采用硬件来保存软件现场。例如,SUN公司的Sparc处理机,内部设置有8套通用寄存器,每一级中断源可以分别使用其中的一套通用寄存器,这样就能够节省保存和恢复现场所用的时间。