优先级反转+解决方案

原创 2007年09月18日 01:33:00

1. 优先级反转(Priority Inversion)
    由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所谓的优先级反转(Priority Inversion)。

2. 产生原因
      其实,优先级反转是在高优级(假设为A)的任务要访问一个被低优先级任务(假设为C)占有的资源时,被阻塞.而此时又有优先级高于占有资源的任务(C)而低于被阻塞的任务(A)的优先级的任务(假设为B)时,于是,占有资源的任务就被挂起(占有的资源仍为它占有),因为占有资源的任务优先级很低,所以,它可能一直被另外的任务挂起.而它占有的资源也就一直不能释放,这样,引起任务A一直没办法执行.而比它优先低的任务却可以执行.  

      所以,一个解决办法就是提高占有资源任务的优先级,让它正常执行,然后释放资源,以让任务A能正常获取资源而得以执行.

3. 解决方案 ( 优先级继承 / 优先级天花板 )

   目前解决优先级反转有许多种方法。其中普遍使用的有2种方法:一种被称作优先级继承(priority inheritance);另一种被称作优先级极限(priority ceilings)。

  A. 优先级继承(priority inheritance)
      优先级继承是指将低优先级任务的优先级提升到等待它所占有的资源的最高优先级任务的优先级.当高优先级任务由于等待资源而被阻塞时,此时资源的拥有者的优先级将会自动被提升.  
   
  B. 优先级天花板(priority ceilings)
      优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板)  
   
  A 和B的区别:
   
  优先级继承,只有当占有资源的低优先级的任务被阻塞时,才会提高占有资源任务的优先级,而优先级天花板,不论是否发生阻塞,都提升.  

相关文章推荐

优先级反转+解决方案

http://wenku.baidu.com/view/3cc5bdca0508763231121273.html 优先级反转+解决方案   1. 优先级反转(Priority Inversi...

优先级反转解决方案

1. 优先级反转(Priority Inversion)     由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所...

优先级反转及解决方案

原文:http://blog.csdn.net/kendiv/article/details/1788966 1. 优先级反转(Priority Inversion)     由于多进程共...

GCD,Operation Queues,Run Loops,如何在后台绘制UI,后台I/O处理,最佳安全实践避免互斥锁死锁优先级反转等,以及如何使用GCD监视进程文件文件夹,并发测试的方案等

iOS并发编程笔记,包含GCD,Operation Queues,Run Loops,如何在后台绘制UI,后台I/O处理,最佳安全实践避免互斥锁死锁优先级反转等,以及如何使用GCD监视进程文件文件夹,...

优先级反转及解决方法探讨

1. 什么是优先级反转(Priority Inversion)     由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这...

uC/OS优先级反转及解决

转自:http://blog.csdn.net/zccst/article/details/4294339 1 uC/OS-II的运行机制   在嵌入式系统的应用中,实时性是一个重要的指标...

优先级反转及解决办法

上次去华为面试,被问及优先级反转及解决办法,虽然以前有所了解,但好长时间没用了,回答时竟然具体卡壳,真是汗颜。所以今天有必要再次理顺一下优先级反转的相关知识。 (1)什么是优先级反转 简单从字面上来说...

优先级反转问题及解决方法

(1)什么是优先级反转 简单从字面上来说,就是低优先级的任务先于高优先级的任务执行了,优先级搞反了。那在什么情况下会生这种情况呢? 假设三个任务准备执行,A,B,C,优先级依次是A>B>C; 首先:C...
  • woodsp
  • woodsp
  • 2013年07月05日 22:04
  • 351

μC/OS-II实验:实验二 优先级反转及解决方法

实验描述: 占有资源的低优先级不能主动放弃CPU,不然优先级肯定反转。 涉及的μC/OS-II系统函数: 实验代码:  app.c 1 2 3 4 5 6 7 8 9 10 1...
  • fovwin
  • fovwin
  • 2013年08月18日 20:48
  • 2860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:优先级反转+解决方案
举报原因:
原因补充:

(最多只允许输入30个字)