不同的计算机其硬件结构和软件指令是不完全相同的,因此,
中断系统也是不相同的。计算机的
中断系统能够加强
CPU对
多任务事件的处理能力。
中断机制是现代
计算机系统中的基础设施之一,它在系统中起着
通信网络作用,以
协调系统对各种外部事件的响应和处理。中断是实现
多道程序设计的
必要条件。 中断是CPU对
系统发生的某个事件作出的一种反应。 引起中断的事件称为
中断源。
中断源向CPU提出处理的请求称为
中断请求。发生中断时被打断程序的暂停点称为断点。CPU暂停现行程序而转为响应
中断请求的过程称为
中断响应。处理
中断源的程序称为
中断处理程序。CPU执行有关的
中断处理程序称为中断处理。而返回断点的过程称为
中断返回。中断的实现实行软件和硬件综合完成,硬件部分叫做硬件装置,软件部分称为软件处理程序。
大多数
中断系统都具有如下几方面的操作,这些操作是按照中断的执行先后次序排列的。
④
处理机执行完一条指令后或者这条指令已无法执行完,则立即中止现行程序。接着,中断部件根据中断级去指定相应的
主存单元,并把被中断的指令地址和
处理机当前的主要
状态信息存放在此单元中。
⑤中断部件根据中断级又指定另外的主存单元,从这些单元中取出
处理机新的状态信息和该级中断
控制程序的起始地址。
②
向量中断:对应每一级中断都有一个向量,这些向量顺序存放在主存的指定单元中。向量的内容是:相应的
中断服务程序起始地址和
处理机状态字(主要是指令地址)。在
中断响应时,由中断部件提供
中断向量的地址,就可取出该向量。
中断响应和处理操作的第⑤步就是取
中断向量操作。在采用
向量中断的机器中一般不再使用
程序状态字。
当CPU收到
中断请求后,能根据具体情况决定是否响应中断,如果CPU没有更急、更重要的工作,则在执行完当前指令后响应这一中断请求。CPU
中断响应过程如下:首先,将断点处的PC值(即下一条应
执行指令的地址)推入
堆栈保留下来,这称为保护断点,由硬件自动执行。然后,将有关的
寄存器内容和标志位状态推入堆栈保留下来,这称为
保护现场,由用户自己编程完成。保护断点和现场后即可执行
中断服务程序,执行完毕,CPU由中断服务程序返回
主程序,中断
返回过程如下:首先恢复原保留
寄存器的内容和标志位的状态,这称为
恢复现场,由用户编程完成。然后,再加返回指令
RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点。
恢复现场和断点后,CPU将
继续执行原主程序,
中断响应过程到此为止。
通常,系统中有多个
中断源,当有多个中断源同时发出
中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。为此,计算机给每个
中断源规定了优先级别,称为优先权。这样,当多个
中断源同时发出
中断请求时,优先权高的中断能先被响应,只有优先权高的
中断处理结束后才能响应优先权低的中断。计算机按
中断源优先权高低逐次响应的过程称优先权排队,这个过程可通过硬件电路来实现,亦可通过软件查询来实现。
当CPU响应某一中断时,若有优先权高的
中断源发出
中断请求,则CPU能中断正在进行的
中断服务程序,并保留这个程序的断点(类似于
子程序嵌套),响应高级中断,高级
中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套。如果发出新的
中断请求的
中断源的优先权级别与正在处理的中断源同级或更低时,CPU不会响应这个中断请求,直至正在处理的
中断服务程序执行完以后才能去处理新的中断请求。
② 程序性中断。现行程序本身的异常事件引起的,可分为以下三种:一是程序性错误,例如指令或
操作数的地址边界错,非法操作码和
除数为零等;二是产生特殊的运算结果,例如定点溢出;三是程序出现某些预先确定要跟踪的事件,跟踪操作主要用于
程序调试。有些机器把程序性中断称为“异常”,不称为中断。
⑤ 调用管理程序。用户程序利用专用指令“调用管理程序”发
中断请求,是用户程序和操作系统之间的联系桥梁。
几个
中断请求可能同时出现,但
中断系统只能按一定的次序来响应和处理。可最先被响应的中断具有最高优先权,按优先级别顺序进行处理。优先权高低是由中断部件的中断排队线路确定的。
当机器设置很多
中断源时,为了
简化设计,对中断源分组管理。具有相同中断优先权的
中断源构成一个中断级。同一级中断使用同一个中断控制程序起点。
对应于各中断级设置相应的屏蔽位。只有屏蔽位为1时,该中断级才能参加
中断优先权排队。中断屏蔽位可由专用指令建立,因而可以灵活地调整中断优先权。有些机器针对某些
中断源也设置屏蔽位,只有屏蔽位为1时,相应的中断源才起作用。