系统结构-3-3中断级屏蔽位设置

2020系统结构系列文章

一、中断的响应次序与处理次序

  关于中断,可以查看这篇文章:中断机制
  中断响应次序的基本规则:一般在处理某级的某个中断请求时,是不能被与它同级的或比它低一级的中断请求所中断的。只有比它高一级的中断请求才能中断其处理,等响应和处理完后再继续处理原先的那个中断请求。中断响应的次序用排队器硬件实现,次序是由高到低固定的,不便于改动。

  中断处理次序指的是实际上对所有中断的处理次序。如果不采用屏蔽技术,中断响应次序就是处理的优先次序。但是根据实际需要,操作系统想要灵活改变中断实际的中断处理次序。于是很多机器设置了中断级屏蔽位寄存器,以决定某些中断请求是否可进入中断响应排队器。这样,中断处理完的次序就可以不同于中断的响应次序。(程序状态字中包含有中断级屏蔽位字段,只有操作系统能对其进行设置,来实现中断处理次序。)

  简单来说就是:中断处理次序是综合中断响应次序以及中断屏蔽状况,最后完成的次序。

二、中断屏蔽状况

  假设某系统有4个中断级,相应地每一级中断处理程序的现行PSW中都有4位中断级屏蔽位。如果中断级屏蔽位为"1",则表示对该级中断开放,允许其进入中断响应排队器;如果中断级屏蔽位为"0",则对该级中断屏蔽,不让其进入中断响应排队器。
  如下图,x级中断请求进入中断响应排队器前,需要查看现行PSW中针对x级中断屏蔽位是否为开放。进入排队器的,则由排队器来判决谁可以输出中断请求(优先级最高的中断请求可以输出)。
在这里插入图片描述

示例1:中断处理次序和中断响应次序一样

  要让各级中断处理次序和中断响应次序一样,都是1-2-3-4,就只需要按照表3-2设置好各级中断程序线程程序状态字中的中断屏蔽位即可。
  简单来说给定一个处理顺序abcd,第b级中断处理程序,其中断屏蔽位应为在它前面的全开放(a),后面的以及本身全屏蔽(bcd)。
  比如给定顺序4123,第2级中断处理程序的屏蔽位4级和1级为1,23级都为0,即1001;
在这里插入图片描述
  假设,当机器正在运行用户程序时,同时发生第2, 3级中断请求,过了一个单位时间,又发生第4级中断请求,都处理完成后,又出现2级中断请求,过了一个单位时间,又同时发生第1级中断请求。程序运行过程示意图应该如下:
在这里插入图片描述

用户程序执行时,其现行PSW中的中断屏蔽位均为1。当2、3级中断请求同时到来时,均进入排队器。按照响应级别高低,优先响应2级中断请求(中断用户程序执行,并设置用户程序的断点,建立2的新现场)。2级中断处理程序启动,执行过程中,4发出中断请求。2级中断处理程序PSW中的4级中断屏蔽位为0,4无法进入排队器。2中断处理完成后,返回断点,恢复用户程序。用户程序PSW中的中断屏蔽位均为1。此时,3、4都在排队器内。按照响应级别高低,优先响应3级中断请求(中断用户程序执行,并设置用户程序的断点,建立3的新现场),处理完成后又返回到被中断的用户程序,再响应并处理4级中断请求。待处理完成后又返回被中断的用户程序继续执行。
后来,又发生第2级中断请求。响应2级中断请求,中断用户程序执行,并设置用户程序的断点,建立2的新现场。处理2级中断请求。处理过程中,发生第1级中断请求,根据2级中断处理程序PSW中的1级中断屏蔽位为1(开放),让1级中断请求进入排队器。按照响应级别高低,优先响应2级中断请求,中断当前2级中断处理程序,并设置2的断点,建立1的新现场。1级中断处理程序开启,由于1级中断处理程序的中断屏蔽位全为0,因此,1级中执行到结束。处理完成后,返回上一级断点,即返回到2级中断程序被打断处,继续处理2级中断程序。处理完成后,返回上一级断点,用户程序继续执行。

  简单来说,响应优先级高的先响应,处理优先级高的先处理。2、3都来,先判断谁的优先级高,2高响应2,再去判断谁的处理级别高,2高处理2。

示例2:中断处理次序和中断响应次序不一样

  如果想把中断处理次序改为1-4-3-2,那么只需由操作系统将各中断级处理程序的中断级屏蔽位设置成如表3-3所示的值即可。
在这里插入图片描述

现按上述假设发出中断请求,则其程序运行过程如下所示:

在这里插入图片描述

用户程序执行时,其现行PSW中的中断屏蔽位均为1。当2、3级中断请求同时到来时,均进入排队器。按照响应级别高低,优先响应2级中断请求(中断用户程序执行,并设置用户程序的断点,建立2的新现场)。由于2级中断处理程序PSW中的3级中断屏蔽位为1,即3可以打断2,于是cpu转而去响应3(设置2的断点,建立3的新现场)。3级中断处理程序开启,没有中断源可以打断3,3级中断处理程序继续执行。执行过程中,4发出中断请求,由于3级中断处理程序PSW中的4级中断屏蔽位为1,允许4进入中断响应排队器。按照响应级别高低,优先响应4级中断请求,设置3的断点->建立4的新现场->中断处理->返回3的断点。继续处理3级中断程序。处理完成后,返回上一级断点(2的断点)。执行2级中断处理程序。待处理完成后又返回上一级被中断的用户程序继续执行。
后面部分同示例1。

  简单来说,响应优先级高的先响应,处理优先级高的先处理。2、3都来,先判断谁的优先级高,2高响应2,再去判断谁的处理级别高,3高处理3。

三、总结

  1. 中断处理次序是综合中断响应次序以及中断屏蔽状况,最后决定的次序。
  2. 用户程序执行时,其现行PSW中的中断屏蔽位,均为开放,即不屏蔽任何中断;
  3. 响应优先级高的先响应,处理优先级高的先处理。(响应:中断现行程序执行,设置断点,建立新现场。处理:执行中断处理程序。处理级别高的,可以打断处理级别低的)
  4. 每个中断处理程序执行完毕都要返回上一级程序断点(不一定是用户程序,也可能是其它级中断处理程序)。

四、例题巩固

201404

交换PSW产生于程序切换时,比如用户程序切换到3级中断处理程序、3级中断处理程序切换到1级中断处理程序、4级中断处理程序切换到用户程序等等。姑且认为,响应不发生程序切换。
在这里插入图片描述
在这里插入图片描述

201510

在这里插入图片描述

201804

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Java基础不好的小水怪,正在学习。有错请指出,一起加油。

  • 10
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值