- 中断请求
中断源是请求CPU中断的设备或事件,一台计算机允许有多个中断源。每个中断源向CPU发出中断请求的时间是随机的。
- 中断响应判优
中断响应优先级是指CPU响应中断请求的先后顺序。当多个中断源同时提出请求时,需通过中断判优逻辑来确定响应哪个中断源的请求,中断响应的判优通常是通过硬件排队器实现的。
- CPU响应中断的条件
CPU在满足一定的条件下响应中断源发出的中断请求,并经过一些特定的操作,转去执行中断服务程序。
CPU响应中断必须满足以下三个条件:
(1)中断源有中断请求。
(2)CPU允许中断及开中断(异常和不可屏蔽中断不受此限制)。
(3)一条指令执行完毕(异常不受此限制),且没有更紧迫的任务。
(CPU在每条指令执行结束前,检查中断请求,若有,则进入中断响应阶段,又称中断周期)
- 中断响应过程(中断周期)
CPU响应中断后,经过某些操作,转去执行中断服务程序。
这些操作由硬件直接实现,我们将它称为中断隐指令。中断隐指令并不是指令系统中的一条真正的指令,只是一种虚拟的说法,本质上是硬件的一系列操作。
它所完成的操作如下:
(1)关中断。保证断点或现场保存的正常进行,防止被其它中断影响。
(2)保存断点。保证在中断服务程序执行后能正确地返回到原来的程序。(保存PC和PSW的内容)。
(3)引出中断服务程序。识别中断源,将中断的服务程序入口地址送人PC。
- 中断处理过程(中断隐指令(1)(3)和中断服务程序(4)(9))
中断隐指令
(1)关中断。
(2)保存断点。将发生中断的指令压入堆栈中。
(3)中断服务程序寻址。识别中断源,确定中断类型号,从而找到相应中断处理程序的入口地址。
以上三步一般由处理中断的硬件电路完成
下面一般由软件完成
中断服务程序
中断服务程序具体负责处理中断(异常)的代码是由软件,也就是操作系统实现的,这部分代码属于操作系统内核代码。(说由cpu处理的也没问题)
(4)保存现场和屏蔽字。进入中断服务程序后首先要保存现场和中断屏蔽字,现场信息是指用户可见的工作寄存器的内容,它存放着程序执行到断点处的现行值(由操作系统完成)。
(5)开中断。允许更高级中断请求得到响应,实现中断嵌套。
(6)执行中断服务程序。这是中断请求的目的。
(7)关中断。保证在恢复现场和屏蔽字时不被中断。
(8)恢复现场和屏蔽字。
(9)开中断、中断返回。中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。
王道视频与书上的内容不同,视频将中断流程分为三个阶段