上次去華為面試,被問及優先順序反轉及解決辦法,雖然以前有所了解,但好長時間沒用了,回答時竟然具體卡殼,真是汗顏。所以今天有必要再次理順一下優先順序反轉的相關知識。
(1)什麼是優先順序反轉
簡單從字面上來說,就是低優先順序的任務先於高優先順序的任務執行了,優先順序搞反了。那在什麼情況下會生這種情況呢?
假設三個任務準備執行,a,b,c,優先順序依次是a>b>c;
首先:c處於執行狀態,獲得cpu正在執行,同時占有了某種資源;
其次:a進入就緒狀態,因為優先順序比c高,所以獲得cpu,a轉為執行狀態;c進入就緒狀態;
第三:執行過程中需要使用資源,而這個資源又被等待中的c占有的,於是a進入阻塞狀態,c回到執行狀態;
第四:此時b進入就緒狀態,因為優先順序比c高,b獲得cpu,進入執行狀態;c又回到就緒狀態;
第五:如果這時又出現b2,b3等任務,他們的優先順序比c高,但比a低,那麼就會出現高優先順序任務的a不能執行,反而低優先順序的b,b2,b3等任務可以執行的奇怪現象,而這就是優先反轉。
(2)如何解決優先順序反轉
高優先順序任務a不能執行的原因是c霸佔了資源,而c如果不能獲得cpu,不釋放資源,那a也只好一直等在那,所以解決優先順序反轉的原則肯定就是讓c盡快執行,盡早把資源釋放了。基於這個原則產生了兩個方法:
2.1 優先順序繼承
當發現高優先順序的任務因為低優先順序任務占用資源而阻塞時,就將低優先順序任務的優先順序提公升到等待它所占有的資源的最高優先順序任務的優先順序。
2.2 優先順序天花板
優先順序天花板是指將申請某資源的任務的優先順序提公升到可能訪問該資源的所有任務中最高優先順序任務的優先順序.(這個優先順序稱為該資源的優先順序天花板)
2.3 兩者的區別
優先順序繼承:只有乙個任務訪問資源時一切照舊,沒有區別,只有當高優先順序任務因為資源被低優先順序占有而被阻塞時,才會提高占有資源任務的優先順序;而優先順序天花板,不論是否發生阻塞,都提公升,即誰先拿到資源,就將這個任務提公升到該資源的天花板優先順序。
優先順序反轉及解決辦法
上次去華為面試,被問及優先順序反轉及解決辦法,雖然以前有所了解,但好長時間沒用了,回答時竟然具體卡殼,真是汗顏。所以今天有必要再次理順一下優先順序反轉的相關知識。1 什麼是優先順序反轉 簡單從字面上來說,就是低優先順序的任務先於高優先順序的任務執行了,優先順序搞反了。那在什麼情況下會生這種情況呢?假...
優先順序反轉及解決辦法
1 什麼是優先順序反轉 簡單從字面上來說,就是低優先順序的任務先於高優先順序的任務執行了,優先順序搞反了。那在什麼情況下會生這種情況呢?假設三個任務準備執行,a,b,c,優先順序依次是a b c 首先 c處於執行狀態,獲得cpu正在執行,同時占有了某種資源 其次 a進入就緒狀態,因為優先順序比c高,...
uC OS優先順序反轉及解決
1 uc os ii的執行機制 在嵌入式系統的應用中,實時性是乙個重要的指標,而優先順序翻轉是影響系統實時性的重要問題。本文著重分析優先順序翻轉問題的產生和影響,以及在uc os ii中的解決方案。uc os ii採用基於固定優先順序的佔先式排程方式,是乙個實時 多工的作業系統。系統中的每個任務具有...