朱建新,趙亞輝
華中科技大學(xué),湖北武漢 430074
現(xiàn)在,隨著手機(jī)硬件功能的快速增強(qiáng),為了給手機(jī)提供靈活的應(yīng)用執(zhí)行環(huán)境,我們需要開發(fā)各種各樣的手機(jī)操作系統(tǒng)和軟件平臺。本世紀(jì)初,手機(jī)WAP瀏覽器平臺被用來訪問WAP網(wǎng)頁、圖片和下載手機(jī)鈴聲。之后,一些應(yīng)用平臺也被用來提供手機(jī)的應(yīng)用執(zhí)行環(huán)境,比如移動虛擬機(jī)(Java、BREW、WIPI等)。但是多數(shù)移動虛擬機(jī)只提供子自己特定的執(zhí)行環(huán)境,其應(yīng)用程序不兼容其它平臺。另外,多數(shù)手機(jī)應(yīng)用程序是用有平臺依賴性的API函數(shù)和庫編寫的,而且編譯的方式也不同。由于最初手機(jī)硬件的限制,比如有限的CPU功能和內(nèi)存空間,多數(shù)手機(jī)只包含一個單一的應(yīng)用執(zhí)行平臺。但是,隨著手機(jī)硬件的發(fā)展,在手機(jī)中應(yīng)用復(fù)雜的軟件架構(gòu)也越來越容易,比如Android、Symbian OS、Windows Mobile等。
為了在單個設(shè)備上運行多重虛擬機(jī),每個虛擬機(jī)都必須是像一個擁有分層軟件模塊的可執(zhí)行目標(biāo)一樣可移植。另外考慮到手機(jī)設(shè)備的硬件資源有限的特征,為了減少程序執(zhí)行的時間,手機(jī)設(shè)備中的軟件系統(tǒng)必須是輕量級的。根據(jù)上面所述的需求,我們設(shè)計了一個基于L4微內(nèi)核的輕量級手機(jī)中間軟件。
L4微內(nèi)核是德國科學(xué)家Jochen Liedtke設(shè)計的第二代微內(nèi)核中的一個族。它包含操作系統(tǒng)基本的服務(wù),如進(jìn)程控制、內(nèi)存管理和進(jìn)程間通信等。其進(jìn)程間通信功能優(yōu)于先前第一代微內(nèi)核。優(yōu)于其輕量級的體積和良好的性能,L4微內(nèi)核適用于在嵌入式平臺上實現(xiàn)虛級化。
在基于L4微內(nèi)核的虛擬機(jī)系統(tǒng)架構(gòu)中,虛擬化的操作系統(tǒng)和設(shè)備驅(qū)動分別作為一個服務(wù)進(jìn)程運行在L4微內(nèi)核上面,從而實現(xiàn)了虛擬化的用戶操作系統(tǒng)內(nèi)核與其它用戶操作系統(tǒng)或設(shè)備驅(qū)動之間的隔離。每個系統(tǒng)調(diào)用都被轉(zhuǎn)換成調(diào)用進(jìn)程和目標(biāo)服務(wù)間的進(jìn)程間通信(IPC)消息?;谖?nèi)核架構(gòu)的虛擬機(jī)的系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 基于微內(nèi)核架構(gòu)的虛擬機(jī)的系統(tǒng)結(jié)構(gòu)
圖2 NICTA:Pistachio-embedded 系統(tǒng)架構(gòu)
澳大利亞國家信息與通信技術(shù)中心(NICTA)的嵌入式實時操作系統(tǒng)研究小組以嵌入式系統(tǒng)為目標(biāo)對卡爾斯魯爾大學(xué)研發(fā)的L4Ka:Pistachio進(jìn)行了擴(kuò)展實現(xiàn)了一個嵌入式操作系統(tǒng)NICTA::Pistachio-embedded,其系統(tǒng)架構(gòu)如圖2所示。
這個操作系統(tǒng)的內(nèi)核選用Iguana提供大多數(shù)系統(tǒng)都需要的基本服務(wù),如內(nèi)存管理和進(jìn)程調(diào)度。在Iguana上面運行著一個完全虛擬化的用戶態(tài)Linux內(nèi)核Wombat。Wombat是高度輕量級的而且可以運行在ARM等多種不同的硬件平臺上,它的性能和標(biāo)準(zhǔn)的Linux非常相近,甚至在一些性能指標(biāo)上超過了Linux。
美國高通公司把L4微內(nèi)核應(yīng)用到了他們最新研制的擁有雙CPU核(ARM9和ARM11)的MSM7000芯片上。在這個架構(gòu)中,為了提高移動手持終端的處理性能和穩(wěn)定性,操作系統(tǒng)被劃分為應(yīng)用操作系統(tǒng)和通信操作系統(tǒng),且每個操作系統(tǒng)都運行在自己獨立的CPU核上,這意味著系統(tǒng)同時在L4微內(nèi)核上加載了兩個操作系統(tǒng)。在應(yīng)用操作系統(tǒng)一端,可以加載提供應(yīng)用服務(wù)功能的Windows mobile或其它手機(jī)操作系統(tǒng),在通信操作系統(tǒng)一端加載提供通信服務(wù)功能的L4/Iguana的REX實時操作系統(tǒng)。
Sun公司的J2ME平臺、高通公司的BREW(Binary Runtime Environment for Wireless)[3]和 韓 國 TTA 公 司的 WIPI(Wireless Internet Platform for Inter-operability)[4]都是典型的支持動態(tài)安裝應(yīng)用程序的移動應(yīng)用平臺,它們可以在手機(jī)硬件平臺上作為一個虛擬機(jī)運行,為許多不同的手機(jī)硬件平臺提供通用的執(zhí)行環(huán)境。傳統(tǒng)的手機(jī)系統(tǒng)軟件架構(gòu)如圖3所示。
圖3 傳統(tǒng)的手持設(shè)備軟件架構(gòu)圖
圖4 總體系統(tǒng)架構(gòu)圖
我們提出的這種基于L4微內(nèi)核的輕量級可移植中間軟件可以在多種手機(jī)平臺上運行應(yīng)用程序。
與前面講述的高通公司的最新軟件架構(gòu)不同,我們的系統(tǒng)運行的目標(biāo)平臺是單處理器的嵌入式設(shè)備。在這個架構(gòu)中,有一個主控制操作系統(tǒng)或進(jìn)程運行在L4微內(nèi)核上面,它把每個虛擬機(jī)都當(dāng)作一個應(yīng)用程序來執(zhí)行。它們之間依靠進(jìn)程間通信機(jī)制(IPC)實現(xiàn)通信,如圖4所示。
大多數(shù)應(yīng)用平臺有著相似的架構(gòu)和運行方式,在這些平臺上運行應(yīng)用程序時,需要向應(yīng)用程序開發(fā)者提供一套應(yīng)用程序接口(API),并把它們映射到系統(tǒng)的硬件抽象層。因此,我們設(shè)計一種在單個設(shè)備中同時支持多種虛擬機(jī)的通用硬件抽象層,就像第二部分提出的基于微內(nèi)核架構(gòu)的虛擬機(jī)的系統(tǒng)結(jié)構(gòu)一樣,每個虛擬機(jī)都作為一個服務(wù)運行在我們的系統(tǒng)中,它可以獨立運行并下載自己的應(yīng)用程序。
大多數(shù)虛擬機(jī)都有各自支持的各種設(shè)備的硬件抽象層,同時又有相同的API函數(shù),所以每種合適不同硬件平臺的應(yīng)用程序代碼都是相似的。例如,BREW平臺中,在嵌入式文件系統(tǒng)中處理一個文件,BREW的應(yīng)用程序可以調(diào)用API函數(shù)IFILWEMGR_OpenFile()去調(diào)用在硬件抽象層中的函數(shù)OEMFS_Open()。同樣的,在WIPI平臺中,API函數(shù)MS_fsOpen()也為WIPI應(yīng)用程序開發(fā)者提供調(diào)用相應(yīng)的硬件抽象層函數(shù)的功能。
考慮到這些相似之處,為了支持系統(tǒng)頂層的應(yīng)用軟件層,我們設(shè)計了一個通用的硬件抽象層,它可以支持多種硬件平臺,提供的服務(wù)由這些設(shè)備的具有代表性的功能組成。
為了將這個通用硬件抽象層應(yīng)用到我們的手機(jī)中間軟件中,它必須符合下面3個需求:
1)代碼輕量級。傳統(tǒng)上,大多數(shù)虛擬機(jī)需要它自己的硬件抽象層,其中實現(xiàn)一個接口函數(shù)就要數(shù)百行的代碼。我們提出的這個通用硬件抽象層架構(gòu)繼承了一般的可調(diào)用函數(shù),可以減少虛擬機(jī)的這些代碼;
2)簡單和靈活的移植性。由于我們封裝了一般的可調(diào)用函數(shù),在移植一個新的虛擬機(jī)時,每個接口都可以被簡化;
3)可維護(hù)性和調(diào)試。在這個通用硬件抽象層架構(gòu)中,函數(shù)調(diào)用都被集中管理并被簡化,這樣就可以減少對系統(tǒng)維護(hù)和調(diào)試的投入。
1)主控制任務(wù)。它是一個守護(hù)進(jìn)程任務(wù),可以初始化和結(jié)束虛擬機(jī)。它同時用一個鏈表結(jié)構(gòu)記錄虛擬機(jī)運行信息。用這個任務(wù)提供的方法,系統(tǒng)可以獲取虛擬機(jī)的一個句柄,用這個句柄可以控制虛擬機(jī),并可避免重復(fù)執(zhí)行虛擬機(jī);
2)設(shè)備驅(qū)動服務(wù)(DDS)。它適合于各個設(shè)備驅(qū)動,比如LCD顯示器、鍵盤、串行口和Flash驅(qū)動。每個設(shè)備驅(qū)動作為一個獨立的服務(wù)運行,并在系統(tǒng)啟動時被初始化。我們實現(xiàn)了四個設(shè)備驅(qū)動服務(wù)(LCD、鍵盤、串行口和文件系統(tǒng)),其它設(shè)備驅(qū)動如MSM6100芯片集中的射頻設(shè)備驅(qū)動包含在高通公司的提供的函數(shù)庫,并且在沒有得到證書的情況下是被禁止使用的;
3)通用硬件抽象層服務(wù)(GPHAL)。是一個面向多種虛擬機(jī)的通用服務(wù)層,它可以為各種各樣的虛擬機(jī)提供具體的API。每個虛擬機(jī)可以調(diào)用GPHAL應(yīng)用程序接口去處理目標(biāo)設(shè)備驅(qū)動。用這個層,可以減少為新建虛擬機(jī)調(diào)用抽象的API函數(shù)進(jìn)行的移植包修改工作。
盡管我們提出的這種中間軟件是為擁有輕量級軟件架構(gòu)的手機(jī)系統(tǒng)設(shè)計的,不過它也可以適用于其它嵌入式設(shè)備。L4微內(nèi)核是一個帶有小TCB的輕量級內(nèi)核,包含我們的中間軟件層也只需要小于1M的存儲空間,它也可以嵌入到感測器設(shè)備或感測網(wǎng)絡(luò)中的一個感應(yīng)服務(wù)中。另外,我們的平臺有獨立的設(shè)備驅(qū)動和通用硬件抽象層,可以為感測網(wǎng)絡(luò)提供了靈活的軟件執(zhí)行環(huán)境。
本文提出一個一個基于L4微內(nèi)核的輕量級手機(jī)中間軟件,它可以為多種虛擬機(jī)提供運行環(huán)境,并可以為在可移動設(shè)備和感測系統(tǒng)中的各種虛擬機(jī)提供靈活的軟件架構(gòu)。利用這個中間軟件平臺,為各種虛擬機(jī)開發(fā)的應(yīng)用程序可以不加修改便可運行在同一款手機(jī)上。因此,這個輕量級的手機(jī)中間軟件為各種智能手機(jī)提供獨立的應(yīng)用程序執(zhí)行環(huán)境,并且使應(yīng)用程序的移植和重用變得容易。
[1]Ben Leslie,Carl Van Schaik and Gernot Heiser。Wombat:a portable user-mode Linux for embedded systems。 In Proceedings of the 6th Linux。Conf.Au,Canberra,April,2005.
[2]Sun Microsystems。The Java ME Platform-Most Ubiquitous Application Platform for Mobile Devices.
[3]Qualcomm Inc。BREWapiTM OEM Porting Guide for MSMTM Platforms,2003.
[4]TTA,Wireless Internet Platform for Interoperability TTAS.KO06.0036/R3,2004,6.