中断系统

引起中断的各种因素

1.人为设置的中断
2.程序性事故:溢出,除法非法,操作码不能识别
3.硬件故障
4.I/O设备
5.外部事件,键盘ESC退出

中断系统需要解决的问题

(1)各中断源怎么向CPU提出中断请求
(2)多个中断源同时提出了中断请求,怎么办
(3)CPU在什么条件,什么时间,以什么方式响应中断
(4)如何保护现场(就是中断结束后,要返回到原来的中断的地方,需要保存原来中断的地方继续向下执行)
(5)如何寻找入口地址(要执行中断程序,需要有一个入口地址)
(6)如何恢复现场,如何返回br> (7)如果在处理中断的过程又出现中断怎么办br> 我们采用软件+硬件的方式来实现的

中断请求标记和中断判优逻辑

1.中断请求标记 INTR
一个请求源,一个INTR中断请求标记触发器
多个INTR,就组成了中断请求标记寄存器

中断系统

2.中断判优逻辑

哪一种中断源的优先级最高,就先响应哪一个中断请求
(1)硬件操作 (排队器)
a。将排队器分散在各个中断源的接口电路中 链式排队器
b。集中在CPU的内部
用硬件的方式:

中断系统
用软件实现(程序查询):
中断系统
那么就会有一个问题了,怎么去找到中断服务程序的入口地址呢/p>

终端服务器入口地址的查找

1.硬件向量法

中断系统
2.软件查询方法
中断系统

中断响应

1.响应中断的条件
也就是说,如果这个时候CPU正在响应中断,如果这个时候又有中断请求了,CPU可以响应吗,明显是不能的,所以这个时候就要出现响应中断请求的条件
允许中断触发器 EINT=1时,表明可以响应中断
2.响应中断的时间
是不是在任何时间都可以响应中断呢明显是不可以的,比如在指令的执行期间
一般是在指令执行完毕之后,才可以响应中断请求
指令周期结束之后,由CPU发出查询信号

中断系统
中断隐指令
(1)保护程序断点(因为在中断响应结束之后,要返回到断点处)
断点存于特定的地址 断点进栈
(2)寻找服务程序入口地址
向量地址 -> PC(硬件向量法)
中断识别程序 入口地址 M->PC (软件查询法)
(3)硬件关中断
避免在执行中断程序的时候又新的中断源干扰
INT中断标记
EINT允许中断
R-S触发器

保存现场和恢复现场

中断系统

多重中断

如果在执行中断的过程中,出现了更重要的,需要及时处理的新事件,怎么办br> 那么,中断是要被打断的:

中断系统

实现多重中断的条件

要允许CPU在执行某个中断服务程序时,响应新的中断请求
(1)提前设置开中断指令(需要允许中断EINT打开
是不是任何一个新的中断服务请求都能打断当前的中断程序br> (2)优先级别高的中断源才能中断优先级别低的中断源

中断系统
在主程序执行的时候,如果B和C发出中断请求,这时候因为B的优先级比C高,所以先响应B的中的中断请求,当响应完B的中断请求之后,CPU会查询还有没有中断请求,发现C这时中断请求还在,所以就会接着响应C的中断请求,执行完C的中断请求后,会返回到主程序,如果这时候D发出中断请求,那么这时候CPU就会响应D的中断请求,但是,在响应D的中断请求时候,CPU检测到有比D更高级别的中断请求,所以会打断D的中断程序执行,从而响应A的中断请求,只有在完成A的中断程之后,CPU才会返回去执行D的中断程序执行完D的中断程序之后,会返回到主程序。

3.屏蔽技术

(1)屏蔽触发器的作用
就是使得某一个中断源无法向CPU发出中断服务请求,也不能参加中断优先排队器的排队

中断系统
屏蔽触发器对应的值就是屏蔽字
实际上每一个中断源对应一个0/1,多个中断源0/1排列
中断系统
上面中,假如1号中断源在执行中断应用程序,那么如果下面的中断源发出中断请求那么CPU是不会进行响应的。

(3)屏蔽技术可以改变中断处理的优先等级
响应优先级 不可改变
处理优先级 可以改变 通过重新设置屏蔽字
也就是说,我们可以让优先级高的不能进入优先排队器中进行响应

中断系统
中断系统
中断系统
(4)屏蔽技术的其他应用
可以人为的屏蔽某个中断源的请求
中断系统

4.多重中断的断点保护

(1)断点进栈 中断隐指令完成
(2)断点存入“0”地址 中断隐指令完成
但是,如果每个断点都保存在“0”地址的话,那么之前的保存的断点就会被冲掉,那么怎么存入断点呢br>

中断系统

来源:Julia_luofang

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月7日
下一篇 2019年10月7日

相关推荐