分區操作系統
分區操作系統
分區操作系統想必很多人都不太了解。下面由學習啦小編為大家整理了分區操作系統的相關知識,希望對大家有幫助!
第1部分 分區操作系統背景
隨著硬件體系結構的不斷復雜、系統功能日益豐富、代碼規模不斷擴大、并發/并行處理程度的不斷加深,像VxWorks-5.5, uC/OS, FreeRTOS這類傳統的RTOS面臨著嚴峻的挑戰如下:
1. 硬件設備的復雜性、多樣性導致系統出錯頻繁
在現代操作系統中硬件相關代碼占到很大的比重,例如Linux內核中大約70%的代碼是設備驅動程序。操作系統的開發人員需要熟悉各種硬件體系結構以及外部設備特性,稍有不慎將導致系統崩潰。斯坦福大學的一項研究表明Linux設備驅動缺陷出現的頻率比內核的其它部分高出5~7倍以上。另外就VxWorks-5.5而言,其內核穩定性在業界有口皆碑,但是隨著硬件平臺及外設的不斷豐富,在VxWorks-5.5的USB驅動中出現的錯誤將直接影響到vxWorks-5.5產品的穩定性。
2. 高度并發處理導致嚴重的資源競爭
RTOS內核中面臨著極為頻繁的競爭行為,這樣競爭行為是由任務之間、中斷之間、以及任務與中斷之間對各類共享資源的并發訪問和可重入操作引起的,對系統的可靠性帶來巨大的威脅,包括原子性破壞、數據一致性破壞、死鎖、優先級翻轉等。據統計,由競爭引發的錯誤在RTOS內核中出現的比例遠高于其他軟件。
3. 由于并行、時序原因引發的錯誤導致系統故障定位困難
相對于應用軟件而言,RTOS的錯誤定位難度要高得多。一方面,由于RTOS是整個系統的最底層軟件,缺乏其它的軟件作為運行支撐,因此對其調試和測試都需要定制的工具才可以完成;另一方面由于RTOS運行的高度并發性、時序相關性導致其錯誤不易被發現、錯誤重現難度極大。因此在RTOS設計中如何嵌入觀測代碼、以便有效采集系統運行狀態及相關數據,以便重現系統運行錯誤現場和運行過程,將顯得極為重要。
4. 隔離和包含手段仍顯薄弱
各個應用程序在保障自身運行正確性和安全性外,還需要防止在其它模塊發生錯誤之后可以不受錯誤級聯反應的影響。因此需要RTOS提供一套有效的隔離與保護機制來限制錯誤的擴散和蔓延。現有的隔離和保護手段主要是借助于MMU和MPU對地址空間進行保護,存在保護力度大、資源消耗多、性能影響大等缺陷,仍缺乏一套有效的軟硬件結合的隔離手段與機制。
面對傳統RTOS可靠性的種種挑戰,需要應用新的設計理念,從根本上改善與提高系統可靠性。因此高可靠分區系統pRTOS采用Partitioning架構,利用分區隔離、降低耦合、以及增加中間層的高可靠RTOS設計模型,如下圖所示。
在pRTOS的設計中,分區不是一個具有強制隔離性質的一組進程,而是一個虛擬的執行環境(RTE-Run Time Environment),在分區中即可以執行一個裸的應用,也可以運行一個支持多任務的操作系統級應用。事實上在pRTOS的多個不同的分區之上可以各自運行不同的操作系統。pRTOS具有擴展成為安全關鍵(Safety-Critical)操作系統的能力。換句話說pRTOS其實是一層最接近硬件的軟件層(中間層)。盡管pRTOS沒有完全兼容航空ARINC653、以及車載AUTOSAR標準,但是ARINC653和AUTOSAR的哲學思想(分隔的思想)已經潛移默化的應用在pRTOS的設計當中。
第2部分 分區操作系統研究現狀
RTOS安全級別可以按EAL(Evaluation Assurance Level)分為7級。國際民航或軍用設備對應EAL5級以上,一般商用和家用操作系統(例如Microsoft Windows 7,Ubuntu Linux,Android)都在EAL4級以下。國際民航通用的RTCA DO-178適航認證屬于EAL5+級別的安全關鍵(Safety-Critical)操作系統。
各RTOS供應商針對不同的市場定位,供應多種安全級別的操作系統。例如Lynuxworks發行的多種操作系統中,LynxOS-Secure是針對最高安全級別(EAL6+)的安全關鍵(Security-Critical)操作系統,LynxOS-178是針對中高安全級別(EAL5+)的(Security-Critical)操作系統,LynxOS-SE是針對虛擬化環境的中高安全級別操作系統。
從設計理念來講,RTOS可以分為三類:傳統的基于線程的實時操作系統(Thread-based RTOS,如uC/OS, FreeRTOS, VxWorks-5.5);基于進程的實時操作系統(Process-based RTOS,比如vxWorks-rtp, realtime-linux);基于分區的實時操作系統Partition-RTOS。目前通過DO-178適航認證的嵌入式RTOS有INTEGRITY-178B,VxWorks-178,LynxOS-178等少數幾個,無一不是分區實時操作系統架構。其中Greenhill的INTEGRITY-178B已經達到EAL6+級別,是目前最高安全等級的Partition RTOS。因此設計一款安全關鍵(Saftey-Critical)操作系統,至少應該滿足Partitioning-RTOS的主流設計理念,基于任務和線程的設計幾乎是不可能達到安全要求的。
第3部分 分區操作系統pRTOS架構
pRTOS采用嵌入式虛擬化技術實現,嵌入式虛擬化技術引入了非常小的性能開銷,使得Partitioning的吞吐量非常接近于裸機的性能。
分區軟件架構的使用主要是為了解決軟件的安全性和可靠性。設計的核心原則是將系統需要隔離的模塊放入分區中。空間和時間隔離是pRTOS的最重要的特性。在安全關鍵系統中,安全關鍵軟件和非安全關鍵軟件是強制隔離的,正如前文所述,這方面的先驅者是航空工業。pRTOS為不同的安全級別或者認證級別的軟件提供了空間和時間隔離。通過內存保護、訪問控制、以及時間觸發的調度機制,使得錯誤被局限在出錯的分區中,從而不會影響到其它的健康分區。這樣可以對分區內的軟件做獨立的安全性認證,從而使得軟件安全認證進一步被簡化;同時pRTOS也為專注于安全性考慮的應用提供了靈活的系統構架。pRTOS結構圖如下:
第4部分 分區操作系統優勢
在可靠性和安全性要求比較強的嵌入式系統中采用Partitioning架構,有以下幾點優勢:
(一) Partition構架可以在同一物理設備上并行運行多種操作系統,一個典型的應用是在Partition RTOS構建的虛擬平臺上同時運行提供實時任務的RTOS(如uC/OS等)和非實時任務的GPOS(如Linux)。既解決了通用操作系統實時性的不足,又解決了RTOS應用不夠豐富的劣勢。
(二)通過把不同子系統封裝到Partition中,比如驅動程序、網絡協議棧或者文件系統等內核組件可以直接運行在Partition上,其它的子系統可以共享該組件,提高了系統的安全性和代碼的復用率。一旦其中一個子系統崩潰或者被攻擊,將不再會影響到其它子系統。例如移動手機終端,其通信協議棧非常關鍵,一旦該協議棧被攻擊者成功進入,這臺手機就可能干擾整個無線網絡,在極端的情況下會導致整個通信網絡的癱瘓。同樣一個加密子系統也需要極高的安全保護,來保證加密信息不被竊取。但是對于現代的嵌入式操作系統來說,越來越龐大的代碼量使得其安全隱患越來越多,由于其允許使用者下載和運行程序,這樣的話一旦某個應用的某個缺陷被攻擊者作為攻擊的切入點,就將導致整個系統的崩潰。比如緩沖區溢出就是一種常見的網絡攻擊手段,其原理是利用用戶程序對緩沖區的超界訪問,從而訪問到系統關鍵數據和程序,從而能夠竊取系統的控制權。在沒有使用Partition技術的系統里如下圖左,緩沖區溢出攻擊一旦成功,整個操作系統已經暴露在入侵者的面前,入侵者將能完全控制整個系統資源,訪問所有的關鍵模塊。
如果入侵者攻擊使用了Partition架構的系統,如上圖右邊所示,雖然入侵者通過應用程序的缺陷侵入了操作系統的用戶交互界面,但該操作系統只負責與用戶進行交互。由于 Partition RTOS存在,攻擊者只能控制被攻擊的操作系統,而不能控制運行于虛擬化系統內的其它 OS。這樣就保證了攻擊造成的損害被降到了最低。
(三)Linux是一個經常被使用的高級操作系統。它的優點就是免費且有一個龐大的開源社區支持。Linux遵照GPL的License發布,它要求任何由Linux衍生出來的代碼都要遵照同樣的license發布,也就意味著開源。這對于商業開發來講就是一個兩難的取舍,既想使用免費的系統又需要保護商業機密。通過虛擬化技術可以實現lisence的隔離,下圖所示Linux運行于相互隔離的虛擬機中,在 Linux 中用使用驅動樁,而把真實的驅動實現在另外的虛擬機中,從而實現了lisence的隔離。
Partition技術實現了軟件和硬件的松散耦合,這樣發布一個新的硬件平臺時客戶操作系統只需要做極少的更改就可以移植到一個新的平臺;另一方便那些需要維護周期長的系統,比如艦載系統,一般的周期至少是10年。在此期間有可能原來的硬件平臺已經停產或者系統已經停止維護,使用Partition技術可以為其提供一個穩定的運行環境。