優先權繼承

優先權繼承是實時計算中去除優先權翻轉的一種方法。進程調度算法對獲取到臨界資源的進程(A)增加其優先權為所有等待該資源的進程中的最高優先權。 一旦進程(A)釋放了該資源,就恢復到原來的優先權。

例子

考慮下例:

Job NamePriority
HHigh
MMedium
LLow

假定L獲取到共享資源後,H申請該資源不得而被阻塞。優先權繼承協定把L的優先權升級到H的級別。M將不能搶先L因而M被阻塞。當L釋放資源後,恢復到低優先權並喚醒H。H有高優先權因而搶先了L的執行權。隨後M、L依次恢復執行。

作用

為了解決由於優先權翻轉引起的問題,Solaris和WinCE引入了優先權繼承的解決方法。 優先權繼承也就是,高優先權進程T在等待低優先權的執行緒T繼承占用的競爭資源時,為了使T能夠儘快獲得調度運行,由作業系統把T的優先權提高到T的優先權,從而讓T以T的優先權參與調度,儘快讓T執行並釋放調T欲獲得的競爭資源,然後T的優先權調整到繼承前的水平,此時T可獲得競爭資源而繼續執行。

圖1 圖1

有了優先權繼承之後的上述現象的執行情況如 圖1所示。

圖二中,到了 T3 時刻,Thread1需要Thread3占用的同步資源SYNCH1,作業系統檢測到這種情況後,就把Thread3的優先權提高到Thread1的優先權。此時處於可運行狀態的執行緒Thread2和Thread3中,Thread3的優先權大於Thread2的優先權,Thread3被調度執行 。

Thread3執行到 T4 時刻,釋放了同步資源SYNCH1,作業系統何時恢復了Thread3的優先權,Thread1獲得了同步資源SYNCH1,重新進入可執行佇列。處於可運行狀態的執行緒Thread1和Thread2中,Thread1的優先權大於Thread2的優先權,所以Thread1被調度執行。

上述機制,使優先權最高的Thread1獲得執行的時機提前。

相關詞條

熱門詞條

聯絡我們