複製鏈接
請複製以下鏈接發送給好友

優先級繼承

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

目錄

優先級繼承例子

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

優先級繼承作用

為了解決由於優先級翻轉引起的問題,Solaris和WinCE引入了優先級繼承的解決方法。優先級繼承也就是,高優先級進程TH在等待低優先級的線程TL繼承佔用的競爭資源時,為了使TH能夠儘快獲得調度運行,由操作系統把TL的優先級提高到TH的優先級,從而讓TL以TH的優先級參與調度,儘快讓TL執行並釋放調TH欲獲得的競爭資源,然後TL的優先級調整到繼承前的水平,此時TH可獲得競爭資源而繼續執行。
圖1 圖1
有了優先級繼承之後的上述現象的執行情況如圖1所示。
到了T3時刻,Thread1需要Thread3佔用的同步資源SYNCH1,操作系統檢測到這種情況後,就把Thread3的優先級提高到Thread1的優先級。此時處於可運行狀態的線程Thread2和Thread3中,Thread3的優先級大於Thread2的優先級,Thread3被調度執行 [1] 
Thread3執行到T4時刻,釋放了同步資源SYNCH1,操作系統何時恢復了Thread3的優先級,Thread1獲得了同步資源SYNCH1,重新進入可執行隊列。處於可運行狀態的線程Thread1和Thread2中,Thread1的優先級大於Thread2的優先級,所以Thread1被調度執行。
上述機制,使優先級最高的Thread1獲得執行的時機提前。
參考資料
  • 1.    李攀峯, 周勇. 實時系統中的優先級繼承[J]. 兵工自動化, 2005, 24(6):105-106.