优先转置

優先權倒置,又称優先權反轉優先權逆轉優先權翻轉,是一种不希望发生的任务调度状态。在该种状态下,一个高优先级任务间接被一个低优先级任务所抢先(preempted),使得两个任务的相对优先级被倒置。

这往往出现在一个高优先级任务等待访问一个被低优先级任务正在使用的临界资源,从而阻塞了高优先级任务;同时,该低优先级任务被一个次高优先级的任务所抢先,从而无法及时地释放该临界资源。这种情况下,该次高优先级任务获得执行权。

在多數個案,發生優先權倒置並不導致直接傷害──高優先權任務的延遲執行不被察覺,最終,低優先權任務釋放共享資源。雖然,亦存在很多情況優先權倒置會導致嚴重問題

举例

在操作系统中,一般情况下,

  1. 进程分优先级,高优先级进程需要执行时可打断现正在执行的低优先级进程;
  2. 普通的临界资源使用方法,如果一个临界资源被获取了,则其它想要获取此资源的程序被阻塞,直到此资源被释放;
  3. 有三个进程(其优先级从高到低分别为T1、T2、T3),有一个临界资源CS(T1与T3会用到)。这时,T3先执行,获取了临界资源CS。然后T2打断T3。接着T1打断T2,但由于CS已被T3获取,因此T1被阻塞,这样T2获得时间片。直到T2执行完毕后,T3接着执行,其释放CS后,T1才能获取CS并执行。这时,我们看T1与T2,虽然T1优先级比T2高,但实际上T2优先于T1执行。这称之为优先级逆转。

参阅

"Introduction to Priority Inversion" by Michael Barr页面存档备份,存于互联网档案馆