嵌入式 實時作業系統導論

2021-09-28 13:47:43 字數 1683 閱讀 6356

排程任務和資料

訊號量和共享資料

可重入性和訊號量

多個訊號量

訊號量作為訊號裝置

使用訊號量的易出現問題

訊號量變數

所謂任務,是指在乙個rtos中所寫的軟體的基本構造塊,也就是通常所說的子程式

有關任務是如何呼叫、它與rots是如何配合工作的等問題稍後再討論。

在rtos中乙個任務總是處在下列三種狀態之一:

1)執行—— 表示微處理器正在執行組成這個任務的指令。

2)就緒—— 表示其它的任務在執行,一旦微處理器處空閒狀態,這個任務就能夠執行。

3)阻塞—— 表示任務目前還沒有獲得執行所需的資源,即使微處理器空閒也不能執行。

至於暫停、掛起、等待、睡眠和延遲等狀態,前面所描述的就緒和阻塞狀態的不同子範疇。

rots的排程程式記錄每個任務的狀態,決定哪乙個任務可以進入執行狀態。其方法是通過檢視分配給任務的優先順序和沒有處於阻塞狀態的任務,決定擁有最高優先順序的任務先執行,剩下的任務則在就緒狀態中等待。

排程程式不會自行改變優先順序,這就可能使得低優先順序的任務長時間地等待,這是不合理的。

從圖中可以看出:私有資料對於其它任務是不可用的。而共享資料可以通過共享變數很容易地將資料從乙個任務轉移到另乙個任務。具體實現方法有兩個

可重入函式是指能夠被多個任務呼叫的函式,即使 rtos 在乙個任務執行這個函式的期間進行了任務的切換,這個函式也能正確地執行。

(1)乙個可重入的函式一般用原子的方法使用變數,除非這些變數儲存在呼叫這個函式的堆疊中或這些變數是任務的私有變數

(2)乙個可重入函式一般不呼叫其它的不可重入的函式

(3)乙個可重入函式一般不用非原子的方法使用硬體

任務可以呼叫兩個 rtos 的函式 takesemaphore 和 releasesemaphore,在某一時刻只能有乙個任務擁有訊號量。

可以利用訊號量使不可重入的函式變為可重入的函式。

大多數 rtos 都允許擁有多個訊號量,但要求每個呼叫都必須指明操作的是哪乙個訊號量。

訊號量的另乙個用途:作為任務或中斷程式和另乙個任務之間進行簡單通訊。

訊號量並不是解決所有共享資料問題的最好方法,因為訊號量使用次數越少,系統可能執行的越好。特別要注意的是訊號量必須正確地使用,而對於乙個初學者,往往容易出現以下錯誤:

忘記獲取訊號量

忘記釋放訊號量

獲取了錯誤的訊號量

持有訊號量太長

引起死鎖

計數訊號量

資源訊號量

互斥訊號量

嵌入式系統 實時作業系統 RTOS

一 rtos中的基本概念 背景 rtos具有的功能 作業系統中的程序與執行緒 二 嵌入式作業系統的主要種類 1 uc os ii 2 linux 作業系統 3 vxworks 4 wince os 作業系統,operating system 是嵌入式系統中的靈魂,是其軟體系統中的重要組成部分,嵌入式...

嵌入式實時作業系統的移植 !

所謂移植,就是使選用的實時核心能在某個特定的微處理器上執行。為了方便移植,大部分的實時作業系統 是用c語言編寫的,但仍需要用c和組合語言編寫一些與微處理器相關的 這是因為有一些操作只能通過組合語言來實現。由於所有的實時作業系統在設計時就已經充分考慮了可移植性,所以移植相對來說是比較容易的。以ucos...

嵌入式實時作業系統 COS 的移植

1 引言 嵌入式系統由於它具有軟體 小 高度自動化 響應速度快等特點已經使它在許多領域得到廣泛的應用 3 從家裡的洗衣機 電冰箱,到作為交通工具的自 行車 小汽車,到辦公室裡的遠端會議系統等。嵌入式系統通常由硬體環境和作業系統構成。在嵌入式作業系統的統一排程管理下實現對所有系統資源的合理利用和 分配...