優先權倒置,又稱優先權反轉、優先權逆轉、優先權翻轉,是一種不希望發生的任務調度狀態。在該種狀態下,一個高優先權任務間接被一個低優先權任務所搶先(preemtped),使得兩個任務的相對優先權被倒置。
這往往出現在一個高優先權任務等待訪問一個被低優先權任務正在使用的臨界資源,從而阻塞了高優先權任務;同時,該低優先權任務被一個次高優先權的任務所搶先,從而無法及時地釋放該臨界資源。這種情況下,該次高優先權任務獲得執行權。
在多數個案,發生優先權倒置並不導致直接傷害──高優先權任務的延遲運行不被察覺,最終,低優先權任務釋放共享資源。雖然,亦存在很多情況優先權倒置會導致嚴重問題
基本介紹
- 中文名:優先權倒置
- 又稱:優先權反轉、優先權逆轉
- 定義:不希望發生的任務調度狀態
- 學科:計算機
- 進程分優先權,高優先權進程需要執行時可打斷現正在執行的低優先權進程;
- 普通的臨界資源使用方法,如果一個臨界資源被獲取了,則其它想要獲取此資源的程式被阻塞,直到此資源被釋放;
- 有三個進程(其優先權從高到低分別為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執行。這稱之為優先權逆轉。