优先级反转及解决办法
来源:互联网 发布:中国交通事故数据统计 编辑:程序博客网 时间:2024/04/29 10:24
(1)什么是优先级反转
简单从字面上来说,就是低优先级的任务先于高优先级的任务执行了,优先级搞反了。那在什么情况下会生这种情况呢?
假设三个任务准备执行,A,B,C,优先级依次是A>B>C;
首先:C处于运行状态,获得CPU正在执行,同时占有了某种资源;
其次:A进入就绪状态,因为优先级比C高,所以获得CPU,A转为运行状态;C进入就绪状态;
第三:执行过程中需要使用资源,而这个资源又被等待中的C占有的,于是A进入阻塞状态,C回到运行状态;
第四:此时B进入就绪状态,因为优先级比C高,B获得CPU,进入运行状态;C又回到就绪状态;
第五:如果这时又出现B2,B3等任务,他们的优先级比C高,但比A低,那么就会出现高优先级任务的A不能执行,反而低优先级的B,B2,B3等任务可以执行的奇怪现象,而这就是优先反转。
(2)如何解决优先级反转
高优先级任务A不能执行的原因是C霸占了资源,而C如果不能获得CPU,不释放资源,那A也只好一直等在那,所以解决优先级反转的原则肯定就是让C尽快执行,尽早把资源释放了。基于这个原则产生了两个方法:
2.1 优先级继承
当发现高优先级的任务因为低优先级任务占用资源而阻塞时,就将低优先级任务的优先级提升到等待它所占有的资源的最高优先级任务的优先级。
2.2 优先级天花板
优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板)
2.3 两者的区别
优先级继承:只有一个任务访问资源时一切照旧,没有区别,只有当高优先级任务因为资源被低优先级占有而被阻塞时,才会提高占有资源任务的优先级;而优先级天花板,不论是否发生阻塞,都提升,即谁先拿到资源,就将这个任务提升到该资源的天花板优先级。
- 优先级反转及解决办法
- 优先级反转及解决办法
- 优先级反转及解决办法
- 优先级反转及解决办法
- 优先级反转及解决办法
- 优先级反转及解决方案
- 优先级反转问题及解决方法
- 优先级反转问题及解决方法
- 优先级反转问题及解决方法
- 优先级反转及解决方法探讨
- uC/OS优先级反转及解决
- OS 调度算法及优先级反转
- OS 调度算法及优先级反转
- OS的进程调度及优先级反转
- uC/OS支持同优先级及优先级反转解决
- 优先级反转
- 优先级反转
- 优先级反转
- 最近在写商城和支付的项目,谈一些感触
- 使用VMware新建Ubuntu虚拟机
- java的访问权限
- 线索树的基本例程:(2)
- SCMHttpclient
- 优先级反转及解决办法
- CodeForces 8A - Train and Peter
- Java的异常处理
- Windows环境,svn服务器地址换了,如何更新本地工作目录
- jQuery 选择器大全
- hot code replace failed
- linux查询rpm包详细信息
- 【Nginx】基于HTTP的反向代理
- linux常用命令(15):tail命令