官术网_书友最值得收藏!

1.6 編寫嵌入式操作系統的方法

要學習嵌入式操作系統原理,則必以編寫為目的,立足于如何編寫嵌入式操作系統將收到事半功倍的效果。編寫嵌入式操作系統分成以下幾步。

第一步必須明確目標。例如,C語言當初的目的就是編寫系統程序,很清楚什么是要的,什么是不要的,因此成功了。而PL語言,當時為了提供給FORTRAN、COBOL、ALGOL使用者一個標準的通用語言,因為目標不夠明確,所以失敗了。

編寫一個操作系統要考慮以下幾部分:

  • 定義一個硬件抽象(Define Abstractions),把硬件和軟件隔離開。為此必須了解所需要涵蓋的不同微處理器的結構、存儲器特征和支持I/O的具體種類。
  • 提供基本操作(Provide Primitive Operations)。基本操作的主要功能是維持系統的數據結構,并保持一致。既要對下面的硬件抽象負責,也要對上層的調用負責。可以說操作系統的核心就是下面的硬件抽象以及對基本操作的調用。
  • 保證隔離(Ensure Isolation)。因為可以有多個用戶同時登錄或使用操作系統,或者多個任務同時運行,所以操作系統要保證它們在內存和上下文環境上的隔離。但是又要能讓它們之間互用一些資源,因此完成時比較困難。
  • 管理硬件(Manage Hardware)。當然操作系統是必須管理底層硬件的,如各種芯片和設備,尤其是要允許用戶通過操作系統去管理一些常用的的硬件設備,如LCD顯示屏、串行接口等。

第二步需要了解編寫操作系統的難點。

  • 為了支持更多的功能,操作系統程序就越變越大,可是沒有用戶愿意花很長時間安裝一個非常龐大的操作系統。
  • 操作系統必須解決并行性,而資源的競爭、死鎖等一系列問題都必須考慮。
  • 操作系統必須要面對一些惡意用戶,如連接網絡時想遠程破壞系統等。
  • 許多設備希望能和別人分享一些資源。
  • 操作系統的生命周期相對非常長,如UNIX等還一直在使用。
  • 操作系統的設計往往面臨一些新事物的挑戰,如Windows、UNIX最初都沒有設計Email支持。
  • 操作系統必須面對各種硬件,即使對硬件不兼容也不能癱瘓。
  • 必須兼容以前的系統。

第三步要了解編寫嵌入式操作系統的基本原則。

原則1:簡單。

原則2:完整。

原則1和原則2就是中國古人說的“增一分則肥,減一分則瘦”的道理。例如,MINIX操作系統最初只設計了三個系統調用:send、recieve和sendrec。send就是發送一個消息。recieve就是接收信息。sendrec是一個優化操作,為了方便在一個內核周期內完成發送并請求一個應答。Amoeba操作系統只有一個系統調用 perform remote procedure call。從簡單入手,然后再從能夠完整表述所有系統的范例來驗證這種設計,從而不斷完善,反復推敲,最后才能確定方案。

原則3:效率。

如果一個系統調用不能用有效的代碼完成,那么不如不要。所以對設計者的要求是必須知道每條代碼的執行效率。例如,UNIX編程者希望lseek要比read調用執行效率高,那么操作系統則必須滿足這種效率來設計這兩個系統調用。

第四步從接口設計開始。操作系統必須為硬件和用戶提供一些處理數據結構和硬件操作的接口。尤其要為一些用戶開放權利,讓其可以插入自己的驅動。

第五步明確自己要采用的體系結構。體系結構劃分詳見3.2節。

通過以上5步,嵌入式操作系統的設計基本就成形了,剩下的就是實現的問題了。

主站蜘蛛池模板: 城步| 彰武县| 东辽县| 兴城市| 淮阳县| 西乌| 伊吾县| 扎兰屯市| 西青区| 成安县| 黄大仙区| 佛学| 台南县| 白朗县| 堆龙德庆县| 新和县| 江门市| 马龙县| 咸阳市| 延津县| 阜城县| 津市市| 大城县| 东明县| 通州区| 开原市| 永康市| 页游| 沾化县| 甘泉县| 沿河| 亳州市| 天全县| 乐东| 石景山区| 阿城市| 浏阳市| 荔波县| 城市| 满城县| 平果县|