程序排程之優先順序反轉問題

2021-10-11 16:13:42 字數 1654 閱讀 8539

實時作業系統(real-time operating system, rtos)是說,任務切換和中斷響應的時間必須保證在多少時間內(如5us內)完成。

分為硬實時和軟實作業系統:

硬實時是說必須在多少時間內完成切換(如vxworks, 我們使用的ecos也是硬實時的)

軟實時則是絕大多數情況可以在多少時間內完成切換(如linux)

從原理來看判斷乙個系統是否是實時只需要看它的排程演算法即可,具體能實時在多少時間內,則要區分不同硬體了。

為什麼需要實時作業系統呢?

舉乙個經常使用的例項,中高檔汽車中使用的氣囊。當報告車輛碰撞的感測器中斷cpu後,作業系統應快速地分配展開氣囊的任務,並且不允許任何其他非實時處理進行干擾,晚一秒鐘展開氣囊比沒有氣囊的情況更糟糕,這就是乙個典型的必須使用硬實時的系統。

除為中斷處理提供確定性外,實時處理也需要支援週期性間隔的任務排程。大量控制系統要求週期性取樣與處理。某個特定任務必須按照固定的週期(p)執行,從而確保系統的穩定性。考慮一下汽車的防抱死系統(abs)。控制系統對車輛的每個車輪的轉速進行取樣(每秒最多 20 次)並控制每個制動器的壓力(防止它鎖死)。為了保持控制系統的正常工作,感測器的取樣與控制必須按照一定的週期間隔。這意味著必須搶占其他處理,以便 abs 任務能按照期望的週期執行。

大多數實時作業系統使用的都是基於優先順序的可搶占式呼叫策略,同一優先順序則使用時間片輪轉排程。

什麼是優先順序反轉

優先順序反轉的含義是說高優先順序的任務被迫等待低優先順序任務執行。

因為多程序共享資源, 當出現互斥資源訪問時,基於優先順序排程會有如下這種現象:

三個任務task1, task2, task3,優先順序 task1 > task2 > task3,當task1和task2某種原因被阻塞時,task3排程執行,task3執行時占用互斥資源a執行臨界區**時,很巧task1這時從阻塞狀態恢復,基於優先順序的排程會立即排程到task1執行,而task1執行時又需要持有互斥資源a,因此task1再度進入阻塞狀態,等待task3執行。task3執行還未釋放互斥資源a,這時task2從阻塞狀態恢復立馬得到排程執行並一直等到task2執行完畢。這時就相當於高優先順序的task1需要等待中優先順序的task2執行了,這就是優先順序反轉。(task2沒有資源關聯)

說白了就是,低優先順序的任務占有高優先順序的任務所需要的資源!某一時刻高、低優先順序任務都在就緒,中間優先順序由於沒有資源關聯,因此可以執行,這就出現了高優先順序任務等待低優先順序任務,也即是低優先順序任務由於高優先順序任務的執行!

如何避免優先順序反轉?

解決優先順序反轉有許多方法,普遍使用的有兩種:優先順序繼承;極限優先順序。

優先順序繼承:當高優先順序的任務需要等待低優先順序任務釋放互斥資源時,暫時先把低優先順序任務的優先順序提公升至和高優先順序任務優先順序一樣。這樣就確保了不會有其他中優先順序任務搶占執行。(ecos產品使用這種)

極限優先順序:當任務占用互斥資源執行臨界區**時,先把該任務的優先順序提公升至極限優先順序(系統最高優先順序),等到釋放資源時再降回原有優先順序。

兩者的區別

優先順序繼承:只有乙個任務訪問資源時一切照舊,沒有區別,只有當高優先順序任務因為資源被低優先順序占有而被阻塞時,才會提高占有資源任務的優先順序;

而優先順序天花板,不論是否發生阻塞,都提公升,即誰先拿到資源,就將這個任務提公升到該資源的天花板優先順序。

程序優先順序反轉

嵌入式實時系統中的優先順序反轉問題 1 問題的提出 目前,市場上占有率比較高的商業 rtos 有vxworks psos qnx lynxos vrtx,windows ce 等。這些為數眾多的 rtos 絕大多數都是多工實時微核心的結構,採用的是基於優先順序的可搶占式排程策略。系統為每乙個任務分配...

OS的程序排程及優先順序反轉

在多程序 多執行緒併發的環境裡,從概念上看,有多個程序或者多個執行緒在同時執行,具體到單個cpu級別,實際上任何時刻只能有乙個程序或者執行緒處於執行狀態 因此os需要決定哪個程序執行,哪些程序等待,也就是程序的排程。一 排程的目標 1 首先要區分程式使用cpu的三種模式 io密集型 計算密集型和平衡...

優先順序反轉問題

6 優先順序反轉問題在嵌入式系統中是一中嚴重的問題,必須給與足夠重視。a 首先請解釋優先順序反轉問題 b 很多rtos提供優先順序繼承策略 priority inheritance 和優先順序天花板策略 priority ceilings 用來解決優先順序反轉問題,請討論這兩種策略。高優先順序任務需...