在不到18個月的時間里,Google Android平臺已從一名“新生兒”成長為全球移動市場乃至移動領(lǐng)域之外其他智能設(shè)備領(lǐng)域內(nèi)的重要成員。越來越多的手持設(shè)備開始部署Android平臺,到2010年末,預(yù)計還會誕生數(shù)十種采用Android的手機(jī)設(shè)計,除此以外,Android在其他領(lǐng)域的應(yīng)用也日益廣泛。
Android平臺具有兩大吸引力:Android為OEM提供了一個功能豐富的開源移動操作系統(tǒng),讓設(shè)備不僅做到“開箱即用”,而且能夠支持第三方應(yīng)用程序;Android Market應(yīng)用程序商店中第三方應(yīng)用程序的產(chǎn)品組合不斷增加,拉升了對基于Android的設(shè)備的需求,同時為整個生態(tài)系統(tǒng)帶來了新的商機(jī)。但另一方面,以Android為目標(biāo)的設(shè)備硬件也為開發(fā)人員帶來了一系列挑戰(zhàn):內(nèi)核對CPU及SoC的支持、驅(qū)動程序開發(fā)、性能優(yōu)化、與其他系統(tǒng)軟件的整合等等。
本文將探討這些難題,并著重講述移動/嵌入式虛擬化如何能夠幫助OEM及其他開發(fā)人員簡化Android支持和遷移。特別地,本文將結(jié)合使用流行的Beagle Board與OKL4 Microvisor。此外,文中還將以安全VoIP作為應(yīng)用示例,演示hypervisor技術(shù)如何幫助開發(fā)人員構(gòu)建和部署更加穩(wěn)健的Android設(shè)備及運(yùn)行于其上的軟件和服務(wù)。
在BeagleBoard及其他硬件上支持Android
Beagle Board (http://beagleboard.org)擁有非常活躍的開發(fā)人員社區(qū),為Beagle Board硬件及在其上運(yùn)行的軟件提供支持。基于ARM Cortex-A8 CPU架構(gòu)的TI OMAP3530亦受益于強(qiáng)大的開源社區(qū)和商業(yè)支持,從而使得該平臺成為專業(yè)人士及業(yè)余愛好者的理想測試環(huán)境。
Android和Beagle Board匯集了應(yīng)用廣泛的軟硬件技術(shù),并且Android曾多次被移植到Beagle Board上,結(jié)果各不相同。特別是Open Kernel Labs(OK Labs)團(tuán)隊發(fā)現(xiàn)了一系列的問題,如驅(qū)動程序支持有限、穩(wěn)定性不夠高、內(nèi)核頻繁紊亂或完全無法啟動。這些故障不一定表明軟硬件平臺本身存在問題,而是由于Android項目迅速發(fā)展和研發(fā)精力分散所造成的。
使用虛擬化作為遷移工具
在企業(yè)數(shù)據(jù)中心和桌面領(lǐng)域,虛擬化的應(yīng)用越來越普遍,其支持的使用案例和應(yīng)用數(shù)不勝數(shù),其中包括硬件整合、負(fù)載平衡、安全和沙箱、配置、多操作系統(tǒng)支持、交叉開發(fā)和舊軟件遷移等。在嵌入式特別是移動應(yīng)用領(lǐng)域,虛擬化在開發(fā)和部署方面的應(yīng)用亦日益廣泛。OK Labs公司為移動手持設(shè)備制造商(OEM)提供“microvisor”──OKL4,用于在某些情況下實現(xiàn)有些特殊的鏡像服務(wù)器及桌面虛擬化應(yīng)用,如CPU整合、多核支持、安全分區(qū)和固件升級,支持多操作系統(tǒng)(實時操作系統(tǒng)和應(yīng)用操作系統(tǒng),如Android、Linux和Symbian等),以及嵌入式/移動平臺遷移。將microvisor(基于微內(nèi)核的嵌入式hypervisor)引入到現(xiàn)有設(shè)計中時絕不可影響該項設(shè)計的具體細(xì)節(jié)。microvisor應(yīng)該隔離新舊的子系統(tǒng),但同時讓其能夠像在原始環(huán)境中那樣使用現(xiàn)有軟件組件(例如Android),從而賦予系統(tǒng)設(shè)計人員靈活性。基于這一理念,一個結(jié)構(gòu)良好的microvisor環(huán)境應(yīng)支持簡單且直接的遷移流程:
1.Microvisor與目標(biāo)硬件的集成
在Beagle Board與OKL4的搭配中,OKL4 Microvisor已支持大多數(shù)常用的嵌入式/移動CPU,其中包括TI OMAP3530,使集成更加方便。
2.Android與Microvisor的集成
對于集成了虛擬化支持(如Intel VT和AMD-V)的企業(yè)和桌面系統(tǒng),對重要資源(如中斷控制、MMU和高速緩存配置)的訪問限制是通過硬件機(jī)制實現(xiàn)的。由于缺乏這些構(gòu)件,Android(或其他“客戶”操作系統(tǒng))必須進(jìn)行“準(zhǔn)虛擬化”,即通過修改讓microvisor攔截并重新實現(xiàn)此類操作。為簡化Android支持,OK Labs提供了一種現(xiàn)成的Android準(zhǔn)虛擬化實現(xiàn)──OK:Android。
3.設(shè)備驅(qū)動程序遷移
顯然,應(yīng)用平臺必須要與設(shè)備硬件進(jìn)行交互。在最初的移動手持設(shè)備實現(xiàn)中,Android必須驅(qū)動LCD顯示屏、觸摸屏或鍵盤、音頻輸入/輸出、USB、WiFi及3G網(wǎng)絡(luò)接口、數(shù)字?jǐn)z像頭和加速器等。對于移動領(lǐng)域以外的應(yīng)用,如數(shù)字視頻、家庭娛樂及其他領(lǐng)域,還必須開發(fā)高清電視、紅外和無線電遙控器、以太網(wǎng)、家居自動化總線(如X10)等的驅(qū)動程序。
將驅(qū)動程序遷移到虛擬化環(huán)境是一種投資回報率的問題──有多種選擇,每種方案都有相對于其投資水平的優(yōu)勢:
原地:舊驅(qū)動程序以其原始設(shè)置保留在Host操作系統(tǒng)(Linux、實時操作系統(tǒng)等)中。這種情況下的遷移主要是集成和配置microvisor,以優(yōu)化對客戶操作系統(tǒng)環(huán)境的支持。
原地虛擬化:現(xiàn)有驅(qū)動程序仍保留在其Host操作系統(tǒng)環(huán)境中,并借助額外的配置來讓其他客戶機(jī)能夠通過OKL4 Microvisor虛擬設(shè)備框架訪問這些驅(qū)動程序。
獨(dú)立:將舊驅(qū)動程序重新托管到稱作設(shè)備服務(wù)器的專用輕量級虛擬機(jī)(安全單元)中,并直接在microvisor上運(yùn)行。所有客戶機(jī)均使用虛擬設(shè)備,然后由microvisor強(qiáng)制策略進(jìn)行管理。因此,獨(dú)立驅(qū)動程序是目前及未來客戶操作系統(tǒng)中最為安全和最便攜的驅(qū)動程序。
4.通信棧
通信棧(3G、WiFi等)通常運(yùn)行于舊實時操作系統(tǒng)之上,可以隨同其原始Host操作系統(tǒng)原封不動地重新托管到microvisor環(huán)境中。在移動應(yīng)用中,這種能力可避免需要重新獲取網(wǎng)絡(luò)運(yùn)營商或其他監(jiān)管機(jī)構(gòu)的認(rèn)證,而失去搶占市場先機(jī)這一巨大優(yōu)勢。
5.其他舊組件
其他舊組件(中間件、實用程序、原始應(yīng)用程序)可以借助OKL4兼容庫直接遷移至microvisor,并作為一個單元集成到最終系統(tǒng)中。一個典型應(yīng)用示例是自定義GUI/應(yīng)用程序棧,可以原封不動地移植過來,一方面節(jié)約了時間,另一方面還保留了產(chǎn)品的多樣化特性。
Beagle Board上的虛擬化Android──軟件架構(gòu)
根據(jù)上述流程,我們可以搭建這樣一種架構(gòu):在Beagle Board上構(gòu)建一個托管Android的虛擬化環(huán)境,同時具備安全VoIP功能,如圖1所示。
?
圖1:圖中架構(gòu)包含Beagle Board OMAP CPU“裸機(jī)”上運(yùn)行的OKL4 Microvisor。啟動時,系統(tǒng)引導(dǎo)進(jìn)入OKL4,然后由OKL4加載并協(xié)調(diào)Android及其他客戶機(jī)軟件的執(zhí)行。
在特定安全單元(虛擬機(jī))中,microvisor托管:
Android。該組件與其他應(yīng)用關(guān)鍵型組件完全隔離,以確保添加至該開放操作系統(tǒng)平臺中的軟件不會影響到整個系統(tǒng)的穩(wěn)定性或安全性。事實上,即使Android發(fā)生崩潰或死鎖,OKL4仍可以重新加載/重新啟動Android,而不影響其他安全單元中正在運(yùn)行的軟件(如Linphone)。
Linphone(或其他VoIP棧和應(yīng)用程序)。在我們的參考設(shè)計中,我們移植了Linphone以便直接在OKL4 Microvisor上運(yùn)行,但如果資源允許的話,Linphone可以駐留在安全單元中的Linux實例上。我們的設(shè)計有意地將Linphone與Android隔離開來,以確保Linphone的穩(wěn)定性和安全性;另一方面,將Linphone托管在OKL4 Microvisor之上還能夠節(jié)約內(nèi)存并提高性能。
音頻及串口驅(qū)動程序。Android與Linphone共享音頻驅(qū)動程序,即使用戶禁用了Android,該驅(qū)動程序仍能夠為VoIP通話提供音頻輸入/輸出。串口驅(qū)動程序是隔離共享的,以支持系統(tǒng)控制臺和調(diào)試。
運(yùn)行系統(tǒng)功能如下:Android作為主操作系統(tǒng),通過Beagle Board上的OMAP顯示硬件提供標(biāo)準(zhǔn)的Android用戶界面呈現(xiàn)給客戶。用戶可以使用基于Android的VoIP“撥號”應(yīng)用程序或Android下運(yùn)行的Linphone控制臺服務(wù)器來啟動安全的VoIP通話。通話啟動后,用戶可以運(yùn)行其他Android應(yīng)用程序(游戲、網(wǎng)頁瀏覽等),而不影響VoIP通話的質(zhì)量或安全性。此時,即使Android進(jìn)入睡眠模式甚至死機(jī),都不會導(dǎo)致通話中斷。
虛擬化和性能優(yōu)化
嵌入式開發(fā)人員總是不信任“阻擋其與硬件親密接觸”的軟件。 在智能設(shè)備發(fā)展初期,面向硬件的開發(fā)人員不喜歡使用高級語言,而偏好匯編代碼,以期從“裸機(jī)”中獲取更多性能。不久,實時操作系統(tǒng)便成了一種“感知瓶頸”。再之后,Linux和Android之類的應(yīng)用操作系統(tǒng)進(jìn)一步加深了癡迷性能的工程師、產(chǎn)品??理和最終用戶的不快。
而如今,移動/嵌入式虛擬化又形成了一個抽象層。它雖然提高了生產(chǎn)效率,但卻使開發(fā)人員及其代碼進(jìn)一步“遠(yuǎn)離”底層硬件,使開發(fā)人員無法深入發(fā)掘他認(rèn)為的通過“裸機(jī)執(zhí)行所具有的性能優(yōu)勢”。
說起來也許令人難以置信,但在許多應(yīng)用方面,虛擬化不僅只產(chǎn)生極小的性能開銷,而且還能夠提高吞吐量和響應(yīng)速度,這主要得益于內(nèi)存利用率的提升和對microvisor IPC的利用。使用了GTKPerf基準(zhǔn)測試套件針對常見GTK+ UI框架執(zhí)行的測試結(jié)果如表1所示。GTKPerf提供了一個通用測試平臺,運(yùn)行預(yù)定義的GTK+窗口小部件(打開組合框、切換按鈕、滾動文本等)來衡量設(shè)備或平臺的運(yùn)行速度。有關(guān)詳細(xì)信息,請訪問http://gtkperf.sourceforge.net/。
下表是我們在原始環(huán)境和虛擬化環(huán)境中運(yùn)行GTKPerf時得到的實際耗時及開銷結(jié)果。對于Android圖形及平臺中的其他子系統(tǒng),結(jié)果應(yīng)該與此類似。
?
表1:原始環(huán)境與虛擬化環(huán)境下的GTK執(zhí)行性能。
下面我們來探討一些更深入的microvisor實現(xiàn)示例,這些實現(xiàn)真實提高了Android等客戶操作系統(tǒng)的性能,這種性能提升在ARM9系列低成本芯片上尤為明顯。
快速地址空間切換
像OKL4這樣設(shè)計精良的microvisor并不依賴于其托管的客戶操作系統(tǒng),并且能夠在不同客戶機(jī)和客戶機(jī)進(jìn)程間提供快速、低延遲的上下文切換。Android軟件架構(gòu)構(gòu)建于相互隔離的組件之上,這些組件借助自定義IPC機(jī)制進(jìn)行通信。與傳統(tǒng)基于Linux的環(huán)境相比,該架構(gòu)會產(chǎn)生更多的進(jìn)程間通信,每次切換進(jìn)程上下文都需要刷新全部緩存。如果常規(guī)Linux中的上下文切換會產(chǎn)生延遲和內(nèi)存總線占用,那么Android的情形可想而知。
為提高Android的性能,OKL4會維護(hù)此類上下文切換的相關(guān)高速緩存狀態(tài),以提高高速緩存利用率,這樣不僅縮短了上下文切換延遲,而且還提高了整體性能。
將內(nèi)存占用降至最小
OKL4 Microvisor針對性能和內(nèi)存使用進(jìn)行了優(yōu)化。對于Android與Linux或OKL4 Microvisor這類基于微內(nèi)核的環(huán)境,直接比較滿棧占用的內(nèi)存大小非常困難。顯然,Android與Linux就連提供的服務(wù)范圍都各不相同。
不過,值得注意的是,OKL4微內(nèi)核本身只占用幾十KB,而Android和Linux的內(nèi)核都是以MB來衡量的。雖然OKL4與生俱來的小尺寸并不能將系統(tǒng)占用降至最小,但是這個小尺寸基礎(chǔ)平臺與一系列附加組件相互集成就形成了一個輕量級準(zhǔn)虛擬化平臺──OK:Android。與Xen或KVM之類的企業(yè)和桌面hypervisor(包含整個Linux內(nèi)核)相比,OKL4真的非常小巧。
擴(kuò)展架構(gòu)及其應(yīng)用
本文介紹的系統(tǒng)架構(gòu)旨在演示在虛擬化環(huán)境中運(yùn)行Android及相關(guān)軟件的簡單和實用之處。這一結(jié)構(gòu)有可能為Android以外的其他客戶操作系統(tǒng)提供同樣的支持。 為方便操作系統(tǒng)集成,OK Labs提供了多種常見移動/嵌入式操作系統(tǒng)的準(zhǔn)虛擬化版本,其中包括OK:Linux和OK:Symbian,以及協(xié)助開發(fā)人員準(zhǔn)虛擬化幾乎任何開源操作系統(tǒng)的工具和服務(wù)。
除此以外,該設(shè)計類型并不局限于移動應(yīng)用或Beagle Board。為方便在廣泛的移動設(shè)備上使用,OKL4支持ARMv5、ARMv6和ARMv7架構(gòu)。這種廣泛支持使得能夠輕松將Android及其他受支持操作系統(tǒng)遷移到其他CPU和SoC,以及Beagle Board開發(fā)環(huán)境或移動應(yīng)用以外的設(shè)備類型;如今,已有超過5億部設(shè)備采用了OKL4。
由于OKL4使用了相同的虛擬化架構(gòu),因此能夠輕松地支持在以下設(shè)備上運(yùn)行的高級操作系統(tǒng)(如Android、實時操作系統(tǒng)及針對特定目的構(gòu)建的平臺):上網(wǎng)本,Webpad、機(jī)頂盒與數(shù)字錄像機(jī)、高清電視、車載系統(tǒng)、醫(yī)療設(shè)備──實際上是支持任何基于ARM的設(shè)備。
本文小結(jié)
借助虛擬化設(shè)計,OEM及開發(fā)人員不但能夠簡化遷移和集成,還能夠享受軟件組件之間高度隔離所帶來的穩(wěn)定性和安全性。在Beagle Board上,OKL4 Microvisor提供了一個穩(wěn)定、可靠托管Android這一流行平臺的捷徑。請盡情暢想,它能夠為您的下一設(shè)計帶來哪些令人贊嘆的功能。
評論
查看更多