优先级反转

版权声明:随意转载,注明链接地址即可 https://blog.csdn.net/weixin_38812277/article/details/91404147

参考:https://blog.csdn.net/u014089131/article/details/74011084 

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

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

3、解决方案

优先级继承(priority inheritance) :优先级继承是指将低优先级任务的优先级提升到等待它(低优先级)所占有的资源的最高优先级任务的优先级.当高优先级任务由于等待资源而被阻塞时,此时资源的拥有者的优先级将会自动被提升。

优先级天花板(priority ceilings)
      优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板)   

优先级继承,只有当占有资源的低优先级的任务被阻塞时,才会提高占有资源任务的优先级,而优先级天花板,不论是否发生阻塞都提升

以上的两种解决办法都是考虑如何调整低优先级进程的优先级。在大多数情况下,上述两种方案可以解决优先级反转问题。

猜你喜欢

转载自blog.csdn.net/weixin_38812277/article/details/91404147
今日推荐