程序中断是指计算机执行现行程序的过程中,出现某些继续处理的异常情况和特殊请求,CPU暂时中止现行程序,而转去执行对随机发生的更紧迫的事件进行处理,在处理完毕后,CPU讲自动返回原来的程序继续执行。
程序中断分为内中断和外中断,向量中断和非向量中断,单重中断和多重中断等多种类型。
中断全过程是指从中断源发出请求开始,cpu相应这个请求,现行程序被中断,转至中断服务程序,直至中断服务程序执行完毕,cpu在返回原来的程序继续执行的整个过程。可以分为五个阶段:中断请求,中断判优,中断相应,中断处理,中断返回。
Cpu响应中断,要满足3个条件:1,中断源有中断请求;2,cpu允许接收中断;3,一条指令执行完毕;第一个条件是显而易见的,无需多说,而第2,3个条件需要仔细讨论。Cpu内部有一个中断允许触发器,以此来确定现行程序是否允许被中断;当中断允许触发器=1时,cpu处于开放状态,允许中断;当中断允许触发器=0时,cpu处于关闭状态,禁止中断。中断允许触发器由开中断指令来置位,有关中断指令或者硬件使其复位。Cpu响应中断的时间是在一条指令执行完毕后,且没有优先权更高的请求(如电源失效或者DMA请求),随后cpu进入中断周期。之所以必须要等到一条指令指令执行完毕,是因为相应中断,意味着出理解讲从一个程序切换到另外一个程序,而程序是一条条的指令组成的,如果不在指令执行执行完毕时切换,中断返回时将无法保证原来的程序能够继续执行。
为使切换前后的程序都能够正确执行,在运行响应阶段需要将cpu的关键性硬件状态保存起来。这些状态有两类,一类是程序的程序状态字,他们保存着程序的执行的现形值,称为中断现场。Psw和pc的内容必须在程序被终止时,不久加以很好的保存,以便恢复时程序能够正确第沿着断点继续执行,否则pc和psw的内容在中断相应时,将被中断服务程序的入口地址和中断服务的程序的状态字冲掉,所以往往在中断周期中由硬件来完成他们的保存。而工作寄存器在中断相应时不会被破坏,因此可以在中断服务程序里有软件把他转移到安全的地方。
在中断周期,cpu执行一条中断隐指令,中断隐指令指有硬件在中断响应时产生,并不是指令系统的一条真正的指令,本身没有操作码,也不会在程序中出现,中断隐指令主要完成三个操作:1,保存断点;2,关闭中断允许触发器;3,找出中断服务程序的入口地址。
在中断周期中必须关闭中断允许触发器大的原因是,保证用软件来保护现行的程序的中断现场期间不允许被新的、更高级的中断请求所打断。并不是所有的计算机都一定在中断隐指令中由硬件关闭中断允许触发器,也有些计算机的这一操作是在中断服务程序的保护现场之前由关中断因指令来实现的。
中断处理就是执行中断服务程序,这是中断系统的核心。
中断服务程序的流程基本由三个部分组成,第一部分是准备部分;基本功能是保护现场,对与非向量中断方式,则需要确定中断源,最后开中断,允许更高级的中断请求打断低级的中断服务程序;对于第二部分,中断处理,即真正执行具体的为某个中断源服务的中断服务程序,第三部分是,结尾部分,首先要关中断,以防止在恢复现场过程中,被新的中断请求中打断,接着恢复现场,然后开放中断,以便返回原来的程序后可以响应其他的中断请求。中断服务程序的最后一条指令一定是中断返回指令。