中断系统是现代计算机系统的核心机制之一,它不是单纯的硬件或者软件的概念,而是硬件和软件相互配合、相互渗透而使得计算机系统得以充分发挥能力的计算模式。
中断的发生会激活很多事件,这包括硬件和软件的方面的事件,所以对于整个中断事件的接收、响应和处理需要有计算机的硬件和软件两方面的配合,共同完成。
可以把中断系统分为两大组成部分:中断系统的硬件中断装置和软件中断处理程序。硬件中断装置负责捕获中断源发出的中断请求,并以一定的方式响应中断源,然后将处理器的控制权移交给特定的中断处理程序。中断处理程序则针对对中断事件的性质而执行相应的系列操作。
中断请求的接收
中断系统如何接收中断源的中断请求,这往往因机器而异。不过从原理上讲,它们是通过在计算机硬件的中断逻辑线路和中断寄存器实现的。
中断逻辑线路用于接收中断信号,并把收到的中断信号寄存在线路中的硬件触发器中。在中断逻辑线路中有若干个专门接受中断信号的触发器,每个触发器称为一个中断位。通常规定,一个触发器的值为1时,表示该触发器收到中断信号,为0时表示无中断信号。这些触发器的全体称为中断寄存器,所以中断寄存器是由若千个中断位组成的。
在有的计算机中,为了不丢失和区分每个中断信号,对每个中断源都用一个固定的触发器来寄存中断信号。而在有的计算机中,对某些没有得到响应的、不重要的中断信号,就不予保存下来,而把它丢弃掉。
中断响应
中断请求的响应机制如下。处理器的控制部件中设置有中断信号扫描结构,它在每条指令执行周期内的最后时刻扫描中断寄存器,查看是否有中断信号到来。若无中断信号,处理器就继续执行下一条指令。若有中断到来,处理器接收由硬件中断装置发来的中断向量代号。
接着,处理器开始为后续的软件处理中断做必要的准备工作:保存中断点的程序执行上下文环境(又称保存现场)。这是因为中断处理结束之后,处理器还要继续被中断程序的执行,所以原有中断点程序执行的所有必要信息都必须保存下来。这个上下文环境通常包括程序状态字PSW、程序计数器PC中的下一条指令位置和一些寄存器的值。它们一般保存在一个专门的系统堆栈中。处理器状态此时被切换到管态。
处理器根据中断向量代号查询中断向量表,获得与该中断源相联系的中断处理程序的入口地址,并将PC置成该地址。随后控制权转移到中断处理程序。
中断请求响应的工作过程是:
①处理器接收中断信号;
②保护现场,将中断断点的程序状态字PSW和程序计数器PC值存入系统堆栈;
③分析中断向量,取得中断处理程序的人口地址;
④将处理器的PC值置为中断处理程序的入口地址;
⑤调用中断处理程序。