优先级反转及解决方法.docVIP

  • 13
  • 0
  • 约小于1千字
  • 约 2页
  • 2022-07-02 发布于广东
  • 举报
优先级反转及解决方法 (1)什么是优先级反转 简单从字面上来说,就是低优先级的任务先于高优先级的任务执行了,优先级搞反了。那在什么情况下会生这种情况呢? 假设三个任务准备执行,A,B,C,优先级依次是ABC; 首先: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 优先级天花板 优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任

文档评论(0)

1亿VIP精品文档

相关文档