什么是优先级反转?

最近在看到非公平锁的时候,提到非公平锁可能会导致优先级反转的问题,关于优先级反转这个概念有点空白,只是从字面上理解,应该是优先级高的比优先级低的先执行了。

后面自己下去查了查资料,大概了解了优先级反转的原因:

操作系统有多个任务,而任务之间谁可以得到执行,是通过任务调度来完成的,而常见的调度算法中,有一种便是基于优先级的调度算法,根据优先级高低去调度,优先让高优先级的任务去执行的,任务调度器,总是去激活某个,在所有任务中优先级是最高的,且处于就绪状态的,任务,即让其去执行。

例如现在有三个线程ABC,优先级A>B>C,A线程在执行的时候,由于资源被C线程给占用了,因此A线程只能等待C线程被调度执行完之后释放资源之后去执行,因此A只能被挂起。但是与此同时,在A线程在判断资源是否可用的同时,B线程创建并进入了就绪状态,本来任务调度器是要去调度C执行任务,执行完了就可以释放资源,继续执行A,但是由于B线程也在任务调度列表中,并且处于就绪状态,由于B的优先级更高,系统的任务调度器执行了B,而没有去执行C。从而导致了B线程优先于A线程执行。

造成的影响:

  1. 造成任务调度时,时间的不确定性,破坏了实时系统的实时性,严重时可能导致系统崩溃
  2. 特别是在跑报表定时任务时,导致任务错乱,逻辑错乱了,程序异常,数据错误。

解决方案:

优先级继承

优先级继承是指将低优先级任务的优先级提升到等待它所占有的资源的最高优先级任务的优先级.对于占了高优先级任务A的某种所需资源的低优先级任务C,赋予给低优先级任务C和高优先级任务A相同的优先级,这种方案的好处就是只有高优先级被阻塞的时候才会触发此方案。

优先级天花板

优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板)  ,相当于A与C都可以具有该资源享用的相同优先级,变就是都可以访问该资源了,A不用等C释放资源就可以访问该资源

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值