盡管Linux能為許多應用及管理服務提供理想的操作環境,但它沒有針對性能、外形尺寸及資源保存進行優化,因此不適于高流量、多CPU系統的應用。Linux還缺乏一整套提供故障通知、熱插拔、負載均衡以及動態發現等時間敏感服務所要求的高可用性屬性。將Linux與諸如OSE的實時操作系統相結合,可以增加真正的實時性、內建高可用性以及對分布式系統的支持。本文將討論這種方案所采用的概念。
對于通信系統的開發來說,Linux操作系統和OSE實時操作系統(RTOS)各自都具有一些必須加以認真考慮的特性。Linux在目前的市場上有很多各種版本的免費和商用軟件,并能提供傳統的、類似于工作站(即Unix)的應用開發環境,而且免許可證費用。不過,Linux只擁有一般的實時能力與編程范例,對分布式系統的支持也很有限(SMP除外),而且不能對性能、外形尺寸或資源保存實現真正的優化。此外,Linux還存在“GNU通用公共許可證(GPL)”混雜等問題。
圖1:Linux和傳統RTOS性能比較。
而OSE RTOS則能為分布式的、有存儲器保護的實時系統提供功能強大且直觀的編程范例,以及一種成熟的、先進的高可用性架構。OSE還可支持包括DSP在內的各種硬件平臺。與Linux相比,在深度嵌入式領域以外,OSE只有數量有限的第三方軟件組件。雖然OSE已經針對性能、確定性、占用存儲空間和系統資源保護進行了設計優化,但開發者仍需具備RTOS及嵌入式系統開發經驗才能地發揮OSE的潛力,而且用RTOS來開發嵌入式應用中非實時部分的成本可能較高。
設計人員的兩難處境
在許多復雜的多處理器或多刀片式環境中,例如蜂窩基站或電信及網絡管理設備,無論是硬件還是軟件,都有很嚴格的實時要求。系統的其他部分可能具有與傳統桌面應用關系更為緊密的功能。標準軟件產品可以滿足其中某些要求。在這樣的系統中,設計者必須在以下幾種方案中做出選擇:
選擇一種RTOS并為系統中的非實時部分編寫定制軟件。該RTOS可使系統高效地運行,但對于非實時操作而言,軟件開發成本可能會很高;
采用帶有實時擴展的Linux。與使用RTOS相比,有實時要求的部分很可能較難開發,而且在性能及可預測性方面存在風險。對于含有數字信號處理器(DSP)的節點更是如此,在這些方面實時性是個問題,對存儲空間的需求也是一個需要考慮的重要因素;
第三種方法是結合上述兩種操作系統的優勢,在適合的地方使用RTOS,而在合理的地方使用Linux。但此方案的缺點是系統將會變得更加復雜。
OSE/Linux混合方法
混合操作系統已被證明是的解決方案,尤其對于多CPU系統。Linux加上OSE實時操作系統可彌補其他兩種方法的缺陷。與Linux相比,OSE已經針對高可用性、高可靠性分布式通信系統進行了優化。它接管了要求實時性能的任務,以及不適用Linux的部分。通過采用通信技術,OSE簡化并減少了軟件開發工作。
OSE的異步消息傳遞特性允許應用程序通過API在OSE或Linux上運行。異步消息傳遞功能簡單且直觀,甚至可用于復雜的多操作系統應用,并能為多內核及分布式多處理器嵌入式系統提供一個概念性的“網關”。對于多處理器或多板上的任務間通信,這是技術,因為它能實現發送方與接受方之間的透明傳輸,而且比其他方法更加安全可靠。
可靠的任務間通信機制
OSE的消息傳遞機制采用一種稱為OSE Link Handler(OSE鏈接處理器)的程序,在帶有多個節點的系統(其中每個節點都擁有自己的操作系統)中透明地工作。OSE Link Handler可同時支持可靠與非可靠通信鏈接,它是高可用性系統中的重要組件。它支持“服務發現”,即遠端進程和任務、節點以及通信鏈接的動態發現,并對其進行監視,向系統提供即時故障通知。
圖2:OSE網關實現了OSE與Linux之間的橋接。
OSE還支持冗余節點和通信鏈接。一旦發生故障,有關各方都會立即得到通知,以便它們能迅速采取適當行動,包括以一種透明應用的方式切換到備份資源。OSE還支持物理互連媒介,并能適合任何協議,因此可以為CPU間通信提供一種單一軟件模型。Link Handler也能用于OSE DSP節點。這極大地簡化了異構系統軟件設計。
Linux與OSE的橋接
OSE網關是一個集成API,它可以橋接兩種操作系統,能將OSE的實時能力帶給Linux。OSE網關使得采用Linux和采用OSE的開發人員能夠共享信息及概念,并能為異構系統提供一個用于通信及監視的可靠架構。OSE網關還能為開發者提供一組API,Linux應用可通過這些接口與運行OSE的系統中的設備進行通信,反之又能為系統管理、故障通知、故障切換、動態發現及熱插拔提供切實的服務。
這些雖然不是標準的Linux功能,但可被運行在Linux上的C代碼調用。這樣Linux就能獲得這些特性而不必加載到操作系統中。不同的操作系統已經在機箱系統中共存多年,它們通過TCP/IP或其他方式通信。OSE網關提供一種完全不同的、更加先進的通信方法。它允許Linux宿主機利用在主機上運行的OSE 的專用服務,使Linux宿主機能將OSE分布式處理與功能映射到Linux范圍內,以便Linux充分利用OSE的處理器間通信(Link Handler)模型。
完整的軟件開發平臺
為實現RTOS/Linux方法,Enea Embedded Technology 與 Metrowerks公司聯合開發了Enea Orchestra軟件開發平臺。這是此類產品中的種商用解決方案。Enea Orchestra的出現,使得Linux的商業利益與OSE實時操作系統的優異性能夠被整合在一個集成開發環境中。
Enea Orchestra包括5個緊密集成的組件:Linux、通用OSE RTOS與數字信號處理器(DSP)、OSE網關、Polyhedra數據庫,以及各種Metrowerks開發技術,其中包含Platform Creation Suite(平臺創建套件)、CodeTEST分析工具、PowerTAP調試探針及CodeWarrior開發環境。Metrowerks技術提供了一個整體架構,針對在各種CUP上開發、配置、部署及測試開放源碼Linux 與OSE應用。
由于認識到在開發復雜的分布式系統時,通常有不同類型的開發小組,因此Enea Orchestra提供兩種產品套裝。其中,Orchestra Applications Development Suite(Orchestra 應用開發套件,ADS)可滿足應用開發人員所有的需要,從OSE RTOS、OSE網關、OSE 軟環境、Polyhedra數據庫直到用于應用級調試的Metrowerks CodeWarrior Studio Editions(Linux 與 OSE)等。
Orchestra平臺開發套件包括適于板級和操作系統開發人員使用的軟件及工具:其中Metrowerks Platform Creation Suite用于構建、配置及部署Linux內核及內核模塊;Metrowerks'CodeWarrior Studio(Linux 及OSE)用于生成電路板;對于選定的電路板,可提供一個完整的Linux BSP。還提供Orchestra評估套件,包括正確評估Orchestra解決方案所需的全部軟硬件(兩塊參考評估板)。
為實現系統范圍內的性數據存儲及數據完整性,Enea Orchestra解決方案采用Polyhedra數據庫管理系統。以冗余配置方式提供一個存儲器內的容錯數據庫應用,能夠在Linux 或OSE或同時在二者上運行。它采用OSE消息通信模型,因此可以被系統中任何節點的應用透明地訪問。
Polyhedra支持自動、透明地故障切換到備份數據庫,而且還提供許多對實時系統有用的特性,例如“活動查詢”,能使應用接收到任何數據庫元素更改的自動通知。Polyhedra還能在Linux 與OSE的混合環境中保證數據的完整性。
Enea Orchestra平臺可以訂購。Enea與Metrowerks之間緊密的合作關系確保Orchestra平臺的用戶能夠獲益于一種非常靈活的許可證機制,易于調整處理器、操作系統及工具的數量。通過Enea用戶可獲得針對整個平臺的全套技術支持,包括Metrowerks及第三方產品,還能得益于Metrowerks公司的Linux專家中心。