簡介
嵌入式實時多任務作業系統會按照排序運行、管理系統資源,並為開發應用程式提供一致的基礎,具有多路性、獨立性、及時性、互動性、可靠性的特點。嵌入式實時多任務作業系統與一般的嵌入式作業系統相比,最大的特色就是其“實時性”,也就是說,如果有一個任務需要執行,實時作業系統會馬上(在較短時間內)執行該任務,不會有較長的延時。這種特性保證了各個任務的及時執行。設計嵌入式實時多任務作業系統的首要目標不是高的吞吐量,而是保證任務在特定時間內完成,因此衡量一個嵌入式實時多任務作業系統堅固性的重要指標,是系統從接收一個任務,到完成該任務所需的時間,其時間的變化稱為抖動。可以依抖動將嵌入式實時多任務作業系統分為兩種:硬實時作業系統及軟實時作業系統,硬實時作業系統比軟實時作業系統有更少的
抖動:硬實時作業系統必須使任務在確定的時間內完成。軟實時作業系統能讓絕大多數任務在確定時間內完成。
嵌入式實時多任務作業系統在的嵌入式套用中用得越來越廣泛,尤其在功能複雜、系統龐大的套用中顯得愈來愈重要。首先,嵌入式實時作業系統提高了系統的可靠性。在控制系統中,出於安全方面的考慮,要求系統起碼不能崩潰,而且還要有自愈能力。不僅要求在硬體設計方面提高系統的可靠性和抗干擾性,而且也應在軟體設計方面提高系統的抗干擾性,儘可能地減少安全漏洞和不可靠的隱患。
設計原則
按照系統對時間限制的滿足程度,實時系統可分為硬實時(Hard Real Time)系統和軟實時(Soft Real Time)系統。硬實時系統是指那些對每個任務調度時間要求非常嚴格的系統,如果不滿足時間限制的要求,則會對系統帶來毀滅性的後果。軟實時系統是指那些對每個任務調度時間要求不是很嚴格的系統,即使超過了時間限制的要求,也不會對系統帶來毀滅性的後果。
實時作業系統所遵循的最重要的設計原則是:採用各種算法和策略,始終保證系統行為的可預測性(predictability)。可預測性是指在系統運行的任何時刻,在任何情況下,實時作業系統的資源調配策略都能為爭奪資源(包括CPU、
記憶體、
網路頻寬等)的多個實時任務合理地分配資源,使每個實時任務的實時性要求都能得到滿足。與通用作業系統不同,實時作業系統注重的不是系統的平均表現,而是要求每個實時任務在最壞情況下都要滿足其實時性要求。也就是說,實時作業系統注重的是個體表現,更準確地講是個體最壞情況的表現。舉例來說,如果實時作業系統採用標準的虛存技術,則一個實時任務執行的最壞情況是每次訪存都需要調頁,如此累計起來的該任務在最壞情況下的運行時間是不可預測的,因此該任務的實時性無法得到保證。由於實時作業系統與通用作業系統的基本設計原則差別很大,因此在很多資源調度策略的選擇上以及作業系統實現的方法上兩者都具有較大的差異。一個好的實時作業系統需要具備以下功能(必須但非充分):多任務和可搶占的;任務具有優先權;作業系統具備支持可預測的任務同步機制;支持多任務間的通信;作業系統具備消除優先權轉置的機制;存儲器最佳化管理;作業系統的(中斷延遲、任務切換、驅動程式延遲等)行為是可知的和可預測的。這是指在全負載的情形下,最壞反應時間可知;實時時鐘服務;中斷管理服務。實時系統最關鍵的部分是實時多任務核心。它的基本功能包括多任務管理、定時器管理、存儲器管理、資源管理、事件管理、系統管理、訊息管理、佇列管理、信號量管理等。這些管理功能是通過核心服務函式形式交給用戶調用的,也就是實時作業系統的API。
特徵
小巧。嵌入式系統所能夠提供的資源有限,所以嵌入式作業系統必須做到小巧以滿足嵌入式系統硬體的限制。
實時性。大多數
嵌入式系統工作在
實時性要求很高的環境中,這就要求嵌入式作業系統必須將實時性作為一個重要的方面來考慮。在資訊時代,人們必須在有效的時間內對到來的信息進行處理,從而為進一步的決策分析爭取時間。所以,嵌入式作業系統必須體現一定的實時性。
可裝卸。由於嵌入式系統需要根據套用的要求進行裝卸,所以嵌入式作業系統也必須能夠根據套用的要求進行裝卸,去掉多餘的部分,或者簡化相應的模組。這些特徵在嵌入式系統的模組劃分中必須事先考慮周全。
固化代碼。在嵌入式系統中,嵌入式作業系統和套用軟體被固化在嵌入式系統計算機的ROM中。輔助存儲器在嵌入式系統中使用很少,因此,嵌入式作業系統的檔案管理功能應該能夠很容易地拆卸,取而代之的是各種記憶體檔案系統。
弱互動性。大多數嵌入式系統的工作過程不需要人的干預。嵌入式作業系統的用戶接口一般不提供操作命令,它通過系統調用命令向用戶程式提供服務。
強穩定性。嵌入式系統一旦開始運行就不需要人過多的干預。在這種條件下,要求負貴系統管理的嵌入式作業系統具有較高的穩定性。
統一的接口。隨著各種各樣的嵌入式作業系統的出現,人們有必要為嵌入式系統提供的接口進行約定,從而為嵌入式套用軟體的設計者提供統一的服務接口,為嵌入式套用軟體的運行提供平台的無關性。
任務管理策略
優先權
每個任務都有其優先權。任務越重要,賦予的優先權應越高。任務的優先權(特別是應用程式的優先權)在運行時可以動態變化的,則稱之為動態優先權。
基於優先權搶占式調度
系統中每一個任務都有一個優先權,核心總是將CPU分配給處於就緒態的優先權最高的任務運行。如果系統發現就緒佇列中有比當前運行任務更高的優先權的任務,就把當前運行任務置於就緒佇列中,調入高優先權任務運行。系統採用優先權搶占方式進行調度,可以保證重要的突發事件及時得到處理。
時間片輪轉調度
時間片輪轉調度算法是讓優先權相同的、處於就緒狀態的任務按時間片使用CPU,以防止同優先權中某一任務獨占CPU。
多任務調度機制
任務調度算法是直接影響實時性能的因素。儘管調度算法多種多樣,但大多由單調速率(Rate-Monotonic Scheduling,RMS)調度算法和最早期限優先(Earlist-Deadline First, EDF)調度算法變化而來。前者主要用於靜態周期任務的調度,後者主要用於動態調度。在不同的系統狀態下,這兩種算法各有優劣。在一般情況下,ERTOS多採用基於優先權搶占方式與時間片輪轉調度相結合的調度。
時間的可確定性
實時作業系統函式調用與服務的執行時間應具有可確定性。系統服務的執行時間不依賴於應用程式任務的多少。基於此特徵,系統完成某個確定任務的時間是可預測的。