第9章-输入输出系统(终).ppt
* 向量地址通常有两种情况: ⑴向量地址是中断服务程序的入口地址 如果向量地址就是中断服务程序的入口地址,则CPU不需要再经过处理就可以进入相应的中断服务程序。 ⑵向量地址是中断向量表的指针 如果向量地址是中断向量表的指针,则向量地址指向一个中断向量表,从中断向量表的相应单元中再取出中断服务程序的入口地址,此时中断源给出的向量地址是中断服务程序入口地址的地址。 4.进入中断服务程序(续) * 中断现场指的是发生中断时CPU的主要状态,其中最重要的是断点,另外还有一些通用寄存器的状态。之所以需要保护和恢复现场的原因是因为CPU要先后执行两个完全不同的程序(现行程序和中断服务程序),必须进行两种程序运行状态的转换。一般来说,在中断隐指令中,CPU硬件将自动保存断点,有些计算机还自动保存程序状态寄存器(PSWR)的内容。但是,在许多应用中,要保证中断返回后原来的程序能正确地继续运行,仅保存这一、二个寄存器的内容是不够的。 5.中断现场的保护和恢复 * 在中断服务程序开始时,应由软件去保存那些硬件没有保存,而在中断服务程序中又可能用到的寄存器(如某些通用寄存器)的内容,在中断返回之前,这些内容还应该被恢复。 软、硬件保护现场往往是和向量中断结合在一起使用的。先把断点和程序状态字自动压入堆栈,这就是保护旧现场;接着根据中断源送来的向量地址自动取出中断服务程序入口地址和新的程序状态字,这就是建立新现场;最后由一些指令实现对必要的通用寄存器的保护。恢复现场则是保护现场的逆处理。 5.中断现场的保护和恢复 * 1.中断嵌套 中断嵌套的层次可以有多层,越在里层的中断请求越急迫,优先级越高,因此优先得到CPU的服务。 要使计算机具有多重中断的能力,首先要能保护多个断点,而且先发生的中断请求的断点,先保护后恢复;后发生的中断请求的断点,后保护先恢复。堆栈的先进后出特点正好满足多重中断这一先后次序的需要。同时,在CPU进入某一中断服务程序之后,系统必须处于开中断状态,否则中断嵌套是不可能实现的。 9.3.4 多重中断与中断屏蔽 * 允许中断还是禁止中断是用CPU中的中断允许触发器控制的,当中断允许触发器(EINT)被置“1”,则允许中断;当中断允许触发器(EINT)被置“0”,则禁止中断。 允许中断即开中断,下列情况应开中断: ⑴无论是单重中断还是多重中断,在中断服务程序执行完毕,恢复中断现场之后; ⑵在多重中断的情况下,保护中断现场之后。 禁止中断即关中断,下列情况应关中断: ⑴当响应某一级中断请求,不再允许被其他中断请求打断时; ⑵在中断服务程序的保护和恢复现场之前。 2.允许和禁止中断 * 中断源发出中断请求之后,这个中断请求并不一定能真正送到CPU去,在有些情况下,可以用程序方式有选择地封锁部分中断,这就是中断屏蔽。 如果给每个中断源都相应地配备一个中断屏蔽触发器(MASK),则每个中断请求信号在送往判优电路之前,还要受到屏蔽触发器的控制。当MASK=1,表示对应中断源的请求被屏蔽,可见中断请求触发器和中断屏蔽触发器是成对出现的。 3.中断屏蔽 * 用程序设置的方法将屏蔽寄存器中的某一位置“1”,则对应的中断请求被封锁,无法去参加排队判优;若屏蔽寄存器中的某一位置“0”,才允许对应的中断请求送往CPU。 3.中断屏蔽(续) * 图9-15 中断屏蔽寄存器的作用 中断屏蔽寄存器的作用 * 如一个中断系统有16个中断源,每一个中断源按其优先级别赋予一个屏蔽字。屏蔽字与中断源的优先级别是一一对应的,“0”表示开放,“1”表示屏蔽。 第1级中断源的屏蔽字是16个“1”,它的优先级别最高,禁止本级和更低级的中断请求;……第16级中断源的屏蔽字只有第16位(最低位)为“1”,其余各位为“0”,它的优先级别最低,仅禁止本级的中断请求,而对其他高级的中断请求全部开放。 3.中断屏蔽(续) * 各中断源的屏蔽字 中断源的优先级 屏蔽字(16位) 1 2 3 ┇ 15 16 111…111 011…111 001…111 ┇ 000…011 000…001 * 中断屏蔽字的另一个作用是可以改变中断优先级,将原级别较低的中断源变成较高的级别,我们称之为中断升级。这实际上是一种动
原创力文档

文档评论(0)