CORBA在分布式嵌入式實時系統(tǒng)中的應用
隨著嵌入式實時系統(tǒng)的飛速發(fā)展,它已被廣泛應用到軍事、通信、工業(yè)控制等領域。近年來,嵌入式操作系統(tǒng)、嵌入式芯片都日漸成熟,嵌入式軟件開發(fā)方式也發(fā)生了很大改變。嵌入式實時系統(tǒng)的發(fā)展方向之一是建立分布式系統(tǒng)。在通信和軍事領域,各種嵌入式設備之間需要進行實時通信,而且各種設備往往建立在異構的軟硬件平臺上。CORBA實現(xiàn)了在分布式系統(tǒng)上的面向對象編程,比較適合建立分布式異構系統(tǒng)。但是由于傳統(tǒng)的CORBA對存儲容量要求較大,且不能滿足實時要求,因而在分布式實時嵌入式系統(tǒng)中的應用受到限制。軟件技術和硬件設備的發(fā)展為建立分布式嵌入式實時系統(tǒng)鋪平了道路。CORBA技術和嵌入式系統(tǒng)的結合成為當前的研究熱門之一。本文首先分析了分布式嵌入式實時系統(tǒng)的特點和要求,然后對實時CORBA處理器、內(nèi)存和網(wǎng)絡資源管理的主要技術進行總結,在此基礎上,提出了利用CORBA技術建立分布式嵌入式實時系統(tǒng)的三種方案。
1分布式嵌入式實時系統(tǒng)的軟硬件要求
1.1 嵌入式系統(tǒng)的特點
嵌入式系統(tǒng)是指除了臺式機、筆記本電腦和主機的計算系統(tǒng)外的、嵌入到設備環(huán)境中、自治地執(zhí)行既定操作的專用計算機系統(tǒng),一般由處理器、感應器和反應器組成。越來越多的消費類電子產(chǎn)品、辦公自動化設備、商務設備和汽車等應用環(huán)境中都有嵌入式系統(tǒng)。
與普通臺式機相比,嵌入式系統(tǒng)具有以下特點:
(1)功能單一。嵌入式系統(tǒng)一般應用在各種專業(yè)領域,其軟硬件都針對最終功能進行裁剪,不具備通用性。
(2)資源限制。為了降低成本,嵌入式系統(tǒng)的資源都受到嚴格限制,主要為處理器資源、存儲器資源和網(wǎng)絡資源。
(3)反應性與實時性。嵌入式系統(tǒng)一般采用實時操作系統(tǒng),進程調(diào)度采用搶占式調(diào)度策略。
1.2 分布式嵌入式實時系統(tǒng)的關鍵設計因素
所謂分布式系統(tǒng),是指各種嵌入式實時設備除了自治完成其特定功能之外,還必須通過網(wǎng)絡互聯(lián)實現(xiàn)相互之間的通信,以完成數(shù)據(jù)傳輸、遠程控制等功能。分布式嵌入式實時系統(tǒng)的關鍵設計因素包括:
(1)分布適應性(Distribution Flexibility)。分布式系統(tǒng)的底層結構必須支持位置透明性,應用程序不必處理目標對象的物理位置。遠程通信時,程序員不必關心發(fā)現(xiàn)對象、使用網(wǎng)絡進行通信等細節(jié)。這樣既可以隔離網(wǎng)絡底層與應用高層,支持異構系統(tǒng),也有利于對系統(tǒng)進行擴展和維護。
(2)異構系統(tǒng)(Heterogeneous Systems)。分布式系統(tǒng)必須無縫集成各種不同層次的異構系統(tǒng),如網(wǎng)絡、操作系統(tǒng)、編程語言。要求用標準的分布式中間件來實現(xiàn)不同語言、數(shù)據(jù)格式和調(diào)用方法的對象之間的相互通信。
(3)分布實時限制(Distributed Real-Time Constrains)。在分布式嵌入式實時系統(tǒng)中,必須對遠程過程調(diào)用的通信延遲進行考慮,硬件和通信協(xié)議的選擇對延遲都有很大影響。
(4)內(nèi)存限制(Memory Limitation)。在每個嵌入式芯片上安裝的系統(tǒng)軟件、通信軟件和應用軟件都受到嚴格的內(nèi)存限制。必須選擇合適的軟件并可以進行特殊的裁剪以降低存儲容量的消耗和提高內(nèi)存使用和訪問效率。
2CORBA在分布式系統(tǒng)上應用的優(yōu)勢
CORBA(Common Object Request Broker Architecture,公共對象請求代理體系結構)是由OMG組織發(fā)布的開放的軟件標準,是目前最流行的中間件平臺。CORBA 僅定義接口,不定義具體實現(xiàn)方式,各廠商或研究機構都可以根據(jù)規(guī)范進行具體實現(xiàn)。目前很多主流的軟件供應商都提供對CORBA的支持。
分布式系統(tǒng)有多種實現(xiàn)方案,如:多計算機系統(tǒng)、網(wǎng)絡操作系統(tǒng)、基于中間件的操作系統(tǒng)。其不同點主要是透明度、異構性和可擴展性?;谥虚g件的操作系統(tǒng)透明度比較高,例如CORBA可以提供訪問透明性、位置透明性、復制透明性、安全透明性等。CORBA通過中間件的形式提供多種通用服務,大大降低了開發(fā)分布式應用程序的生命周期和成本,降低了程序出錯的可能性。
如圖1所示,客戶程序通過名稱服務等方法獲得遠程對象的引用后就可以調(diào)用遠程對象的方法。在客戶機上的樁(stub)模擬服務器上的實際對象,程序員只需要調(diào)用對象的方法而不必關心對象是在本地還是遠程。方法調(diào)用通過底層的ORB(對象請求代理)進行參數(shù)和返回值的包裝與解包,ORB可以屏蔽不同的網(wǎng)絡協(xié)議。同時ORB以中間件的形式提供多種通用服務,可以大大降低程序員的編程代價。
CORBA支持各種面向對象的編程語言,如C++和JAVA。特別需要強調(diào)的是:CORBA將遠程調(diào)用也封裝在對象中,對程序員隱藏了底層的通信細節(jié)。程序員對分布式對象的引用與集中式環(huán)境下的引用基本相同,因此可以大大提高軟件的生產(chǎn)效率。
3實時CORBA的資源管理
通用的CORBA并不提供對實時系統(tǒng)的支持,這阻礙了CORBA在實時嵌入式系統(tǒng)中的應用。為此,OMG對CORBA進行了擴展,于2002年提出了Real-time CORBA規(guī)范1.0版,但它僅支持靜態(tài)調(diào)度;2003年11月OMG推出了Real-time CORBA規(guī)范2.0版,以支持動態(tài)調(diào)度。Real-time CORBA的目標是通過實施系統(tǒng)行為的端到端的可預測性(End-to-End Predictability)和提供對資源管理的支持來滿足實時要求。實時CORBA犧牲了CORBA的部分通用特性來支持實時系統(tǒng)的開發(fā)。應用程序開發(fā)過程中,必須進行顯式的資源請求,資源的分配可以靜態(tài)處理。
在優(yōu)先級固定的CORBA系統(tǒng)中,所謂“端到端的可預測性”是指:(1)在處理CORBA調(diào)用而發(fā)生資源競爭時遵守客戶機與服務器之間的線程優(yōu)先級;(2)端到端進行處理時限定發(fā)生優(yōu)先級反轉的時間長度;(3)限定操作調(diào)用的延遲。
實時CORBA的接口和機制可以保證ORB和應用程序成為可預測的組合。應用程序通過使用實時CORBA的接口來管理資源;ORB機制協(xié)調(diào)組成應用程序的行為;實時CORBA則通過實時操作系統(tǒng)來調(diào)度線程和處理資源競爭。
Real-time CORBA規(guī)范中抽象的“活動”被具體化為三種處于不同階段的實體,即傳輸協(xié)議中的消息、內(nèi)存中的請求以及被調(diào)度到處理器上運行的線程。這三個階段分別被稱為“傳輸中”、“靜態(tài)的”和“活動的”。實時CORBA可以對這三種狀態(tài)中的活動進行作用。應用程序開發(fā)人員必須通過實時CORBA提供的界面對“活動”的狀態(tài)進行界定。
如圖2所示,實時CORBA規(guī)范對CORBA體系結構的主要擴展是調(diào)度服務和優(yōu)先級映射。
CORBA實時嵌入式系統(tǒng)包括4個主要的組成部分:操作系統(tǒng)、實時ORB、通信傳輸、應用程序。為了保證整個嵌入式系統(tǒng)滿足實時要求,系統(tǒng)的各組成部分及其相互之間的結合都應具有時間上的確定性。
Real-time CORBA必須建立在嵌入式設備的本機實時操作系統(tǒng)基礎上,利用本地的實時操作系統(tǒng)進行處理器資源、存儲資源和網(wǎng)絡資源的管理,以實現(xiàn)整個系統(tǒng)上端到端的可預測性。
(1)處理器資源管理
CORBA進行處理器資源管理的策略是將網(wǎng)絡任務的優(yōu)先級映射到實時操作系統(tǒng)的優(yōu)先級隊列中。有二種映射方法:一種是將網(wǎng)絡ORB請求映射到整個實時操作系統(tǒng)的優(yōu)先級范圍;另一種是映射到本地實時操作系統(tǒng)優(yōu)先級的一個子集上。
優(yōu)先級繼承與傳播:在運行過程中,進程會創(chuàng)建子進程,不同的進程之間相互調(diào)用,如果不支持優(yōu)先級繼承和傳播,則無法保證正確的優(yōu)先級關系。被調(diào)用進程的優(yōu)先級必須大于或等于調(diào)用進程的優(yōu)先級。因此在調(diào)用時,必須動態(tài)改變被調(diào)用進程的優(yōu)先級。
(2)存儲管理
Real-Time CORBA的存儲管理是通過進程池來實現(xiàn)的。本地操作系統(tǒng)給CORBA子系統(tǒng)分配一定數(shù)量的進程數(shù)目,并根據(jù)請求參數(shù)配置進程可用的存儲資源。
CORBA進程申請緩沖區(qū)時,操作系統(tǒng)會對系統(tǒng)空閑區(qū)加鎖,然后再根據(jù)請求分配存儲區(qū)域。當系統(tǒng)空閑區(qū)不能滿足連續(xù)分配時,系統(tǒng)將對內(nèi)存區(qū)域進行移動或合并,這一過程中進程處于等待狀態(tài)。更嚴重的是,如果此時出現(xiàn)一個更高優(yōu)先級的內(nèi)存請求,則不管當前是否能滿足,由于已經(jīng)加鎖,這一高優(yōu)先級的進程只能等待低優(yōu)先級進程結束并釋放資源。解決方法是預先分配不同的內(nèi)存池供不同進程使用,這樣,進程之間不再互斥共享存儲區(qū)域。
(3)網(wǎng)絡資源管理
在多任務嵌入式操作系統(tǒng)中,多個進程可能并發(fā)要求網(wǎng)絡進行數(shù)據(jù)傳輸。傳統(tǒng)CORBA一般采用復用技術以降低硬件開銷,即只有一個端口和單線連接,程序與通信端口之間的綁定是隱式的,實際的綁定被延遲到有數(shù)據(jù)傳輸請求時。但是這種網(wǎng)絡復用無法保證實時性。一般情況下,網(wǎng)絡資源屬于不可搶奪資源,因此高優(yōu)先級的進程必須等待低優(yōu)先級進程完成后才能使用網(wǎng)絡。為了保證實時性,可以為多個任務申請不同的端口和專線連接,程序與通信端口之間的連接綁定進行預先分配。由于嵌入式系統(tǒng)功能比較單一,在設計系統(tǒng)時事先可以確定所需要的最大連接數(shù)目,所以這種方案是可行的,只是網(wǎng)絡硬件資源的利用率可能比較低。一種改進的方案是設立不同優(yōu)先級的端口和連接,ORB根據(jù)請求的優(yōu)先級動態(tài)確定使用的端口和連接。為了確保網(wǎng)絡連接的實時性,可以針對不同情況選擇以下的策略:
①選擇協(xié)議:除了TCP/IP協(xié)議,可以根據(jù)實際要求采用其他網(wǎng)絡協(xié)議以提高數(shù)據(jù)傳輸速度。
②私有連接:通過專線連接,線路沒有復用和共享。這種方法代價較大,但是對實時性的支持也最大。
③多路連接:可以支持線路復用,也可以提高容錯性能,連接的管理可以對應用程序透明。這樣,ORB必須提供適當?shù)臋C制以確保高優(yōu)先級任務優(yōu)先獲得連接,另外,也可以由程序員顯式綁定。
利用上述各種資源管理策略,實時CORBA可實現(xiàn)各種軟實時和硬實時系統(tǒng)的QoS要求。
4用CORBA建立分布式嵌入式系統(tǒng)的方案
目前,針對不同的應用場合,在內(nèi)存資源受到嚴格限制的嵌入式設備上建立分布式系統(tǒng)的方法大致分成三類。
(1)減少內(nèi)存使用
OMG于2002年8月推出了minimum CORBA規(guī)范1.0版以滿足一些內(nèi)存受到限制的系統(tǒng)的需求,包括軟實時嵌入式系統(tǒng)。minimum CORBA是CORBA的一個子集,它對CORBA的某些部分進行了裁剪,去除了在嵌入式系統(tǒng)中不需要的部分,要求是去除這些部分后的minimal CORBA仍然能滿足可移植性和可互操作性等性能。由于嵌入式系統(tǒng)的專用性,通常,在編譯時刻都可以確定系統(tǒng)的功能,因此動態(tài)調(diào)用接口(DII)、動態(tài)框架接口(DSI)等部分都被省略。經(jīng)過裁剪的CORBA(如ORBexpress)的靜態(tài)內(nèi)存占用可以降低至100KB以下。minimum CORBA并不提供對硬實時系統(tǒng)的支持。如果需要實現(xiàn)硬實時系統(tǒng),則必須選擇滿足Real-Time CORBA規(guī)范的產(chǎn)品,如華盛頓大學開發(fā)的TAO。
(2)特殊配置
可針對各種設備專門設計ORB系統(tǒng),如應用在手持設備上的PalmORB。各種設備對資源的需求是不一樣的,而且在系統(tǒng)設計時可以確定,因此可以對CORBA進行更多的裁剪。這種方案往往由專業(yè)廠商來實現(xiàn),其特殊性比較強,一般不具備通用性,可擴展性能也比較差,這里不作詳細介紹。
(3)利用代理
UORB(Ubiquitous Object Request Broker)是Universidade Federal de Pernambuco大學的G N Rodrigues首先提出的,它類似于sun公司的Jini Surrogate Architecture。UORB不需要在嵌入式設備內(nèi)安裝ORB系統(tǒng),嵌入式設備通過線路與一臺安裝了ORB的計算機相連,相互之間通過私有協(xié)議進行通信。ORB網(wǎng)關與其他計算機互連,用IIOP進行通信,代理主機上用軟件實現(xiàn)對象代理,即構造嵌入式系統(tǒng)的虛擬對象。對除代理主機以外的其他計算機,可以把嵌入式設備當成一般的設備進行通信。
CORBA代理模型不需要在設備上安裝ORB庫就允許設備加入CORBA網(wǎng)絡環(huán)境。CORBA處理不是在嵌入式設備上而是位于代理主機上。這種方式是受到Jini Surrogate Architecture的啟發(fā)而提出的。嵌入式設備不能直接與網(wǎng)絡上的其他設備或主機進行通信,而必須通過安裝了此設備代理的主機間接地與網(wǎng)絡上其他設備進行通信。在嵌入式設備上的存儲資源要求很低,對設備的要求只是設備必須與代理主機進行連接和通信。
以上三種方式對嵌入式設備的各種資源要求越來越少,每種方式都有其適用的范圍,分別被不同的系統(tǒng)所采用。