1. 程式人生 > >UCOS 實時多工作業系統

UCOS 實時多工作業系統

  • 介紹

UCOSII 的前身是 UCOS,最早出自於 1992 年美國嵌入式系統專家 Jean J.Labrosse 在《嵌
入式系統程式設計》雜誌的 5 月和 6 月刊上刊登的文章連載,並把 UCOS 的原始碼釋出在該雜誌的
BBS 上。目前最新的版本:UCOSIII 已經出來,但是現在使用最為廣泛的還是 UCOSII,本章
我們主要針對 UCOSII 進行介紹。
UCOSII 是一個可以基於 ROM 執行的、可裁減的、搶佔式、實時多工核心,具有高度可
移植性,特別適合於微處理器和控制器,是和很多商業作業系統效能相當的實時作業系統
(RTOS)。為了提供最好的移植效能,UCOSII 最大程度上使用 ANSI C 語言進行開發,並且已
經移植到近 40 多種處理器體系上,涵蓋了從 8 位到 64 位各種 CPU(包括 DSP)。
UCOSII 是專門為計算機的嵌入式應用設計的,絕大部分程式碼是用 C 語言編寫的。CPU 硬
件相關部分是用匯編語言編寫的、總量約 200 行的組合語言部分被壓縮到最低限度,為的是便
於移植到任何一種其它的 CPU 上。使用者只要有標準的 ANSI 的 C 交叉編譯器,有彙編器、連
接器等軟體工具,就可以將 UCOSII 嵌人到開發的產品中。UCOSII 具有執行效率高、佔用空間
小、實時效能優良和可擴充套件性強等特點, 最小核心可編譯至 2KB 。UCOSII 已經移植到了幾
乎所有知名的 CPU 上。

  • 任務管理

uC/OS-II 中最多可以支援64 個任務,分別對應優先順序0~63,其中0 為最高優先順序。63為最低階,系統保留了4個最高優先順序的任務和4個最低優先順序的任務,所有使用者可以使用的任務數有56個。   uC/OS-II提供了任務管理的各種函式呼叫,包括建立任務,刪除任務,改變任務的優先順序,任務掛起和恢復等。   系統初始化時會自動產生兩個任務:一個是空閒任務,它的優先順序最低,該任務僅給一個整形變數做累加運算;另一個是系統任務,它的優先順序為次低,該任務負責統計當前cpu的利用率。

  • 時間管理

uC/OS-II的時間管理是通過定時中斷來實現的,該定時中斷一般為10毫秒或100毫秒發生一次,時間頻率取決於使用者對硬體系統的定時器程式設計來實現。中斷髮生的時間間隔是固定不變的,該中斷也成為一個時鐘節拍。   uC/OS-II要求使用者在定時中斷的服務程式中,呼叫系統提供的與時鐘節拍相關的系統函式,例如中斷級的任務切換函式,系統時間函式。

  • 記憶體管理
    在ANSI C中是使用malloc和free兩個函式來動態分配和釋放記憶體。但在嵌入式實時系統中,多次這樣的操作會導致記憶體碎片,且由於記憶體管理演算法的原因,malloc和free的執行時間也是不確定。   uC/OS-II中把連續的大塊記憶體按分割槽管理。每個分割槽中包含整數個大小相同的記憶體塊,但不同分割槽之間的記憶體塊大小可以不同。使用者需要動態分配記憶體時,系統選擇一個適當的分割槽,按塊來分配記憶體。釋放記憶體時將該塊放回它以前所屬的分割槽,這樣能有效解決碎片問題,同時執行時間也是固定的。

  • 任務間通訊與同步

uC/OS-II 採用的是可剝奪型實時多工核心。可剝奪型的實時核心在任何時候都執行就緒了的最高優先順序的任務。   uC/os-II的任務排程是完全基於任務優先順序的搶佔式排程,也就是最高優先順序的任務一旦處於就緒狀態,則立即搶佔正在執行的低優先順序任務的處理器資源。為了簡化系統設計,uC/OS-II規定所有任務的優先順序不同,因為任務的優先順序也同時唯一標誌了該任務本身。

  • μC/OS-II的組成部分
    μC/OS-II可以大致分成核心、任務處理、時間處理、任務同步與通訊,CPU的移植等5個部分。   1) 核心部分(OSCore.c)   是作業系統的處理核心,包括作業系統初始化、作業系統執行、中斷進出的前導、時鐘節拍、任務排程、事件處理等多部分。能夠維持系統基本工作的部分都在這裡。   2) 任務處理部分(OSTask.c)   任務處理部分中的內容都是與任務的操作密切相關的。包括任務的建立、刪除、掛起、恢復等等。因為μC/OS-II是以任務為基本單位排程的,所以這部分內容也相當重要。   3) 時鐘部分(OSTime.c)   μC/OS-II中的最小時鐘單位是timetick(時鐘節拍)。任務延時等操作是在這裡完成的。   4) 任務同步和通訊部分   為事件處理部分,包括訊號量、郵箱、郵箱佇列、事件標誌等部分;主要用於任務間的互相聯絡和對臨界資源的訪問。   5) 與CPU的介面部分   是指μC/OS-II針對所使用的CPU的移植部分。由於μC/OS-II是一個通用性的作業系統,所以對於關鍵問題上的實現,還是需要根據具體CPU的具體內容和要求作相應的移植。這部分內容由於牽涉到SP等系統指標,所以通常用匯編語言編寫。主要包括中斷級任務切換的底層實現、任務級任務切換的底層實現、時鐘節拍的產生和處理、中斷的相關處理部分等內容。