Linux内核:进程管理——中断屏蔽技术

【README】

本文总结自《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐;

【1】中断屏蔽

1,中断屏蔽的意思是,在中断1的服务程序执行过程中,不允许被其他中断打扰;

2,按理,对于不同中断源,它有中断响应优先级,但这个是硬件决定的,无法修改;而如果要修改各个中断的优先级(即是否可以被打扰),可以通过中断屏蔽寄存器(人工设置该寄存器的值)来实现;这是提出中断屏蔽技术的原因所在;

3,中断屏蔽的具体原理是: 每个中断源都有一个中断屏蔽字(如16个bit); 当该中断被响应或执行该中断的服务请求时,对应中断源的屏蔽字设置到中断屏蔽寄存器;在中断响应时,cpu会根据屏蔽寄存器的值来判断是否响应该中断;

【1.1】屏蔽技术介绍

1 中断屏蔽技术

  • 1.1 通过设置中断屏蔽字来改变中断服务优先级,从而提高系统设计和响应的灵活性;
  • 1.2 中断屏蔽字是通过中断屏蔽触发器来设置的;INTR 是中断请求寄存器;MASK 是中断屏蔽触发器(MASK=0,非门输出1时表示未屏蔽);

2 如何提出中断请求?

  • 触发器D在完成后,提出中断请求,能够提出中断的条件是,这个中断源没有被屏蔽掉;

3 右图第2种方式实现中断屏蔽

  • 中断屏蔽字的长度等于中断源的个数,屏蔽字的每个bit对应到每个mask的取值上;
  • 若maski等于1,则表示第i个中断源的中断请求不会被响应(或被屏蔽);当然也无法提出中断请求;

中断屏蔽触发器的作用是 屏蔽某个中断源发出中断请求,也不能参加中断请求优先级的排队;

【1.2】中断屏蔽字

屏蔽触发器对应的值是屏蔽字;
如,16个中断源,每个中断源都对应一个屏蔽字;
每个屏蔽字表示当中断源的中断服务程序在执行过程中,是否允许其他中断源提出中断请求
进入到排队器进行排队(即是否允许其他中断源提出中断请求);对应的bit位为1表示屏蔽,0表示不屏蔽;

如:1号中断源的中断服务程序在执行过程中,无论是1号还是2.。。。16号中断源提出的中断请求都不会进入中断排队器中排队(即1号中断源屏蔽其他中断源的中断请求);
但2号中断服务程序的执行过程中,允许1号中断源提出中断请求并被1号打断;

【2】 屏蔽技术可以改变中断处理优先级

【2.1】中断响应优先级与处理优先级

1,中断优先级分为响应优先级,处理优先级;

  • 响应优先级,属于中断硬件给定,无法修改;
  • 处理优先级,可以通过屏蔽技术进行修改;

2,处理优先级是可以改变的,通过重置屏蔽字,让低优先级的中断无法进入排队器排队;通过中断屏蔽字让某一个中断源的处理优先级被提高;

【例】 在执行C的中断服务程序的过程中,对应的中断屏蔽字(中断屏蔽寄存器)被设置为0110,只有A或D的中断请求可以进入中断排队器中排队;

【2.2】例子,屏蔽技术修改中断处理优先级

响应优先级为 A B C D,降序排列, 无法修改;处理优先级修改为, A D C B,降序排列;

【例子】加入屏蔽技术后的多中断处理步骤

  • 步骤1: ABCD同时提出中断服务请求,因为主程序屏蔽字(即中断屏蔽寄存器)为0000(不会屏蔽任何中断),所以4个中断都会进入排队器;
  • 步骤2: 又A的响应优先级最高,所以cpu先响应A,转而执行A的中断服务程序;在执行A中断服务程序过程中,因A的屏蔽字为1111,故它会把中断屏蔽字设置为1111,这会屏蔽其他中断源(ABCD)的中断请求;
  • 步骤3: A的中断服务程序执行后,返回主程序,这时主程序屏蔽字是0000,所以中断屏蔽字寄存器为0000; 即主程序随时可以被打断,DCB都可以进入中断排队器进行排队;
  • 步骤4: 又B的响应优先级最高,所以先响应B,执行B的中断服务程序;又B的中断屏蔽字为0100,所以B允许被CD中断源打断;
  • 步骤5: 在执行B的中断服务程序过程中,CD均可以提出中断请求,并进入中断排队器排队;
  • 步骤6: 又C的响应优先级高于D,所以先响应C,转而执行C的中断服务程序(C中断B);响应C后, C的中断屏蔽字设置到中断屏蔽字寄存器,即0110;那么C的中断服务程序可以被AD中断源打断;
  • 步骤7: 在执行C的中断服务程序过程中,D提出中断请求,进入排队器进行排队;又D的处理优先级高于C,所以中断C,转而执行D(D中断C);
  • 步骤8: 执行D完成后,回到C的中断服务程序的断点,继续执行C,因为D中断的是C(中断谁就返回谁);
  • 步骤9: C执行完成后,再返回到B,因为C中断的是B;
  • 步骤10: B执行完成后,整个执行就结束了;

【3】新屏蔽字的设置

新屏蔽字的设置步骤:

原文作者:精通Linux内核

原文地址:Linux内核:进程管理——中断屏蔽技术 - 知乎(版权归原文作者所有,侵权留言联系删除)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值