嵌入式OS入門筆記-以RTX爲案例:一.簡介

嵌入式OS入門筆記-以RTX爲案例:一.簡介


最近在做OS相關的項目,一方面涉及到大量(通用)操作系統的概念和理解,另一方面要深入到一個小實時操作系統的源代碼中,並在此操作系統上開發應用。雖然說內容上並不難,但是操作系統本身是一個非常基礎,影響深遠的計算機科技的小分支,所以把操作系統的知識重新整理一遍,同時結合實時操作系統的實際情況,形成這樣一套筆記,一是對項目的一個回顧,另外也方便將來回來查閱吧。


1.操作系統的角色

OS其實是一個很宏大的概念,不好捉摸。根據維基百科的定義,OS是一組管理硬件和爲應用軟件提供服務的軟件。這個說法很精練但依然抽象。我覺得大部分OS扮演着兩個最主要的角色:硬件的抽象表達者和資源的管理者


硬件的抽象

如果要讀取硬盤中的某一個數據,首先得確定盤片,然後確定磁道和扇區,最後通過磁頭讀取進內存。這實際上是一系列複雜的機械和電子的操作,雖然說複雜,但是影響最終運作結果的因素(讀寫地址)不多,大部分操作是對於不同的讀寫都是相同的。如果每一次執行讀寫硬盤操作,應用程序都要明確地對硬件作出準確的指示,那麼應用程序會臃腫無比,程序員也會爲編寫這樣的程序感到非常無趣。


正如David Wheeler的那句名言:“Any problem in computer science can be solved with another layer of indirection.”OS的首要任務正是把這些繁雜的底層硬件的執行細節隱藏,提供給程序和用戶一個相對抽象的概念。例如把一系列的機械和電子操作轉化爲簡單的一句代碼-讀取硬盤(地址)。


一般普通計算機使用者之所以不熟悉底層的這些細節,也正是因爲有OS,這個硬件的抽象的存在。他們對計算機運作的認識,只是一個建立在OS基礎之上的心理模型(mental model)。




Hard  Disk Driver - 《Operating System Concepts》


資源的管理

最早期的計算機是沒有操作系統的,一般會有一個操作人員(operator)負責給程序排序,安排下一個時間段運行何程序。其實這就是操作系統的雛形,而這時這個操作人員的主要任務就是分配計算機資源。操作系統的核心其實就是資源的分配和管理,特別是在多程序(multiprogramming)的環境下。如何優化資源的分配,減少有害的競爭,提高某些資源的共享效率,都是操作系統關心的核心話題。這裏說的資源主要指的是硬件資源,例如內存,CPU,網絡帶寬和I/O等等。


其實縱觀很多OS的教科書的組織,一般主要的討論話題不外乎進程內存外設。這些話題都離不開OS的這兩個角色,例如進程管理,很大一部分就是關於資源的分配,而進程本身又是OS對程序的一個抽象。所以我覺得具體學習研究OS時,只要能夠抓住1.它抽象的對象和抽象的程度;2.如何合理的優化資源的安排,就能夠達到學習研究的目的。

2.實時操作系統

其實嵌入式操作系統不一定就是實時操作系統(RTOS),反之亦然。但很多場合下嵌入式開發應用都對實時性的要求很高,所以這兩個概念經常混用。RTOS最突出的就是它要在deadline之前完成任務,其中又分兩種,一種是硬deadline,如果不能在規定deadline前完成,那麼後果會很嚴重甚至產生一些致命的錯誤;而軟deadline則稍微寬鬆一點,即使不能夠在deadline前完成,deadline後繼續完成任務直至完成也是可以接受的。

一個很通常的誤區就是,RTOS和通用OS的最大差別是RTOS要快。雖然速度快很重要,但這不是RTOS的核心特徵。RTOS最爲重要的是其行爲的決定性(determinism)可預測性(Predictability),同時RTOS對系統的響應速度要求也很高。當然,RTOS的容錯,糾錯能力也要足夠強。

這些特性其實都是一些極端工業環境下對OS的要求,例如在覈反應和化學反應中,非常精確的控制,特別是在時間上的控制,往往決定了整個工業過程的成敗,而且失敗的代價往往非常高。所以一個好的RTOS,雖然沒有一些通用的操作系統全面,但其行爲的差異(variance)會比通用OS小得多。


3.RTX

我會以Keil開發的RTX實時操作系統作爲主要的參考操作系統。這裏面有幾個原因:

  • RTX五臟俱全,是個完整且優秀的實時操作系統
  • RTX對ARM設備Cortex-M系列的芯片有比較好的支持(自家產品)
  • 更重要的是,RTX不僅免費,而且其代碼是開放的,是可以自由查閱的!



這些基本情況就寫到這裏,下次我會更具體地介紹一下RTX和其他涉及到的工具。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章