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

3.2 嵌入式操作系統的體系結構

設計一個嵌入式操作系統,必須先定義好其體系結構,對整體結構做一個規劃。同時,嵌入式操作系統體系結構也是一個操作系統的整體脈絡,了解了這個脈絡,整個操作系統的理解和使用也就有了著手點。

3.2.1 整體型

整體型其實就是無結構。任何過程都可以隨意調用其他過程,因此沒有信息隱藏的概念。這類結構中過程代碼接口需要精心設計,以方便其他過程調用。

在這種類型的嵌入式操作系統中,當然也可以有一點結構的概念,如圖3.1中把所有處理分成三個層次,使設計顯得比較有條理。其與分層結構的不同在于上下層處理都不隱藏信息,都可以互相調用。例如,最早的DOS系統就是一個整體型結構,模塊之間可以相互調用。

圖3.1 嵌入式操作系統整體型體系結構

3.2.2 層次型

層次型是最簡單和自然的劃分方法,也就是把整個設計按照離硬件的遠近層次來劃分。層次型設計一般來說每層都會對相鄰層隱藏一些信息,非相鄰層完全不能夠互相調用。

用這種結構設計一個新系統時必須小心地安排各個層的功能。最底層是最靠近硬件的,主要目的是對上層隱藏硬件細節。緊挨著的上一層就可以設計成處理中斷、上下文切換、內存管理等。再往上的層次就跟硬件完全無關了。例如,第三層可以設計成管理多任務、多線程,第四層可以設計一些任務之間的通信等。這樣的設計可以簡化I/O處理的結構。當I/O中斷產生后,可以利用進程間通信,由調度程序關掉使用該中斷需要的資源的線程,使中斷處理程序處于獲得所有資源的狀態。MINIX就采用這種方式,但是UNIX、Linux和Windows都沒有使用這樣主動處理中斷的方式。其實操作系統中最復雜的部分就是I/O的處理了,任何可以簡化操作的技術都是可取的。

例如,圖3.2中虛內存管理放在文件系統之下層是為了能夠完成文件讀/寫時高速緩存的換入、換出操作。

圖3.2 嵌入式操作系統層次型體系結構

又如,Linux就是一個層次型體系結構,如圖3.3所示。

圖3.3 Linux的結構

3.2.3 微內核

與層次型劃分的流派相反的是,一些人認為沒有必要由嵌入式操作系統完成那么多功能,必須把一部分開發的自由交給編程者,使他們可以根據自己的需要為嵌入式操作系統做自己的功能擴展。為此,他們主張采用微內核的方式設計嵌入式操作系統,也就是只提供一個基本的嵌入式操作系統內核,完成如硬件的屏蔽、任務調度等,其余的如網絡支持或者文件支持設計成可選模塊,交給編程者來決定使用或者做拓展。嵌入式操作系統微內核體系結構如圖3.4所示。

圖3.4 嵌入式操作系統微內核體系結構

3.2.4 客戶-服務器

客戶-服務器結構是針對網絡環境的,在不同功能的計算機上裝不同的嵌入式操作系統。在客戶端用輕負載的嵌入式操作系統,一般其功能就是收集數據;在服務器端則裝比較大的操作系統,支持更復雜的任務和更復雜的硬件。圖3.5的結構中可以看出,客戶-服務器類型的嵌入式操作系統同時也是具有核的嵌入式操作系統,支持不同的應用程序,核部分主要完成網絡通信功能。

圖3.5 嵌入式操作系統客戶-服務器體系結構

如圖3.6所示是QNX4.25的體系結構,這就是一種客戶-服務器的體系結構。2011年底RIM整合黑莓與QNX發布BBX系統,也說明了這種體系結構是具有優勢的。QNX具備一個很小的內核,同時也是微內核體系結構的操作系統。QNX的內核一般只有幾十KB,整個操作系統可根據需要定制模塊。不同的客戶應用可以選擇不同的模塊,但是都必須選擇微內核部分。服務器包含微內核和更多的模塊部分。

圖3.6 QNX4.25的體系結構

當然,以上幾種體系結構是可以混合運用的。

主站蜘蛛池模板: 新蔡县| 东安县| 兴海县| 丹江口市| 桃园县| 乌拉特前旗| 育儿| 宁化县| 县级市| 桃园市| 兰州市| 当涂县| 卢湾区| 临江市| 盘锦市| 灌云县| 密山市| 云林县| 志丹县| 江永县| 永吉县| 隆德县| 鄂州市| 汾阳市| 荃湾区| 天等县| 龙川县| 清苑县| 北海市| 龙井市| 正安县| 高唐县| 陇南市| 建宁县| 锦屏县| 亚东县| 诸暨市| 阳西县| 新源县| 达拉特旗| 罗山县|