分割槽作業系統
想必很多人都不太瞭解。下面由小編為大家整理了的相關知識,希望對大家有幫助!
第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技術可以為其提供一個穩定的執行環境。
分散式作業系統原理與實踐