Ucos作業系統任務優先順序分配原則

2021-09-26 02:52:58 字數 1515 閱讀 6018

ucos是乙個可剝奪性核心的作業系統。所以每乙個任務都必須有乙個優先順序。ucos作業系統中任務的優先順序使用乙個8位整型資料來表示的。比如我們的0,1,2,3這些數,ucos任務優先順序的取值範圍為 0 - os_lowest_prio之間,數字越小,優先順序越大。

靜態優先順序

這個優先順序被分配以後,它在任務的執行過程中,或者說在這個系統的執行過程中,它的優先順序就不能變了,比如說,我們把這個優先順序分配為2,那這個任務在執行過程中就一直為2,沒辦法變成其他的優先順序。

動態優先順序

在任務的執行過程中,它本身是2這個優先順序,但是在執行過程中,它還可以變成3,變成4,變成n這個數,那這個過程就被稱為動態優先順序,也就是說這個優先順序在系統的執行過程中,會出現乙個可以變化的過程,ucos是乙個支援動態優先順序的乙個系統,也就是說,我們的ucos可以在系統執行的過程中,來更改乙個任務的優先順序,這點我們需要注意。

對任務優先順序分配首先需要做的有哪些事情呢?

假設系統中有1,2,3,4,5,這5個任務,第乙個任務對我們開關的輸入訊號進行掃瞄,第二個任務處理我們的按鍵,第三個任務處理我們的串列埠通訊,第四個任務進行我們的系統邏輯處理,比如我們的開關量輸出,第五個任務執行我們的lcd屏顯示,假設我們對這5個任務分配優先順序怎麼分配呢?

第乙個我們必須把前3個任務的分配優先順序要比後兩個要高,為什麼呢?

因為從邏輯上來說,我們是首先進行開關量掃瞄,進行按鍵處理,進行串列埠通訊,接下來,才進行邏輯處理,因為在邏輯處理當中,我們有可能用到開關量掃瞄,按鍵處理,和串列埠等等這些資訊,所以說我們分配優先順序的時候前3個任務的分配優先順序要比後兩個要高,對於這個輸出和lcd屏顯示,我們來看看這兩個怎麼處理,首先一般來說lcd屏顯示是乙個比較緩慢的過程,因為lcd屏顯示是乙個慢速的裝置,那第四個邏輯處理和開關量輸出執行速度比較快,那我們就把第四個的優先順序要比第五個的高一點,那也就是說,對於乙個任務,它執行的時間越短,分配的優先順序越高,這是為什麼呢?

非常簡單,因為我們剛剛說了ucos是乙個可剝奪性核心,也就是說,如果有高任務在執行,那麼這個低任務它是沒辦法執行的,那如果這個任務占用的時間比較少,我們就把它放到乙個較高的任務上,那它就能很快的執行完畢,這樣我們的cpu就可以較快的執行一些其他的任務了,這個是我們在使用優先順序分配的乙個問題,優先順序的分配不是那麼容易的,我們對乙個比較好的作業系統要好好來考慮這個優先順序的分配,如果優先順序的分配的不好,就可能出現——優先順序反轉。

任務優先順序分配的原則

1、對於實時性要求高的任務應該分配較高的優先順序。

比如我們剛剛舉例的串列埠執行任務,我們都知道當串列埠接收到乙個資料以後,它需要在一定的時間內把這個資料處理完,並且返回到上位機,上位機是不可能一直等待這個資料的,所以說我們對這個串列埠的執行它就有乙個時間的要求,也就是實時性要求較高,那對於這個任務,我們就要分配乙個較高的優先順序。

2、對於執行速度較快的任務應該分配較高的優先順序。

3、任務在邏輯之前的要分配較高的優先順序。

就是我們剛剛說的,我們首先是掃瞄開路,掃瞄按鍵,接下來我們才能進行邏輯的處理。所以說我們的掃瞄開路,掃瞄按鍵要比邏輯處理的優先順序要高,否則的話,我們還沒有進行開關量掃瞄,已經開始處理邏輯了,這個時候,就發生了乙個錯誤。

作業系統 優先順序反轉 優先順序繼承

優先順序反 準確來說,指的是一種現象,並非一項任務排程技術,即高優先順序任務被低優先順序任務阻塞推遲的行為被稱為 優先順序反轉 這是一種不合理的行為方式,如果把這種行為再進一步放大,當高優先順序任務正等待訊號量 此訊號量被乙個低優先順序任務擁有著 的時候,乙個介於兩個任務優先之間的中等優先順序任務開...

ucos 四 優先順序

define os lowest prio 7 定義最小優先順序 小於63 define os stat prio os lowest prio 1 統計任務 可選 define os idle prio os lowest prio 空閒任務 必須 優先順序最低 osinit 呼叫如下 os in...

作業系統 優先順序反轉 優先順序繼承 優先順序天花板

目錄 什麼是優先順序反轉?什麼是優先順序繼承?什麼是優先順序天花板?高優先順序任務被低優先順序任務阻塞,導致高優先順序任務遲遲得不到排程。但其他中等優先順序的任務卻能搶到cpu資源。舉個栗子 程序a,程序b,程序c。優先順序依次遞增。程序c優先順序最低,但程序c最先執行 占有鎖 此時程序b執行,因為...