定義:高優(yōu)先級任務需要等待低優(yōu)先級任務釋放資源,而低優(yōu)先級任務又正在等待中等優(yōu)先級任務的現(xiàn)象叫做優(yōu)先級反轉。 此時高優(yōu)先級任務和中等優(yōu)先級任務之間沒有任何共享資源但執(zhí)行順序卻發(fā)生了倒置,這種情況稱為優(yōu)先級反轉,而高優(yōu)先級任務因為等待低優(yōu)先級任務釋放資源而阻塞的情況則不稱為優(yōu)先級反轉
兩種經(jīng)典的防止反轉的方法:
優(yōu)先級繼承策略(Priority inheritance):繼承現(xiàn)有被阻塞任務的最高優(yōu)先級作為其優(yōu)先級,任務退出臨界區(qū),恢復初始優(yōu)先級。 在上述例子中體現(xiàn)為當高優(yōu)先級任務需要等待低優(yōu)先級任務釋放資源而阻塞時,就將低優(yōu)先級任務的優(yōu)先級升為高優(yōu)先級任務的優(yōu)先級,當它退出臨界區(qū)后就將其優(yōu)先級恢復為初始優(yōu)先級
優(yōu)先級天花板策略(Priority ceilings): 優(yōu)先級天花板是指將申請(占有)某資源的任務的優(yōu)先級提升到可能訪問該資源的所有任務中最高優(yōu)先級任務的優(yōu)先級.(這個優(yōu)先級稱為該資源的優(yōu)先級天花板) 。在上述例子中體現(xiàn)為當?shù)蛢?yōu)先級任務申請占有某資源時就將這個低優(yōu)先級任務的優(yōu)先級升為能訪問該資源的所有任務中最高優(yōu)先級任務的優(yōu)先級。
優(yōu)先級繼承策略對任務執(zhí)行流程的影響相對較小,因為只有當高優(yōu)先級任務申請已被低優(yōu)先級任務占有的臨界資源這一事實發(fā)生時,才抬升低優(yōu)先級任務的優(yōu)先級。而天花板策略是誰占有就直接升到最高。