亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于LXC的Android系統(tǒng)虛擬化技術(shù)①

        2018-01-08 03:11:44谷德賀顧乃杰劉博文蘇俊杰賀愛香
        關(guān)鍵詞:客戶機(jī)內(nèi)核虛擬化

        谷德賀,顧乃杰,劉博文,蘇俊杰,賀愛香

        1(中國科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,合肥 230027)

        2(中國科學(xué)技術(shù)大學(xué) 安徽省計(jì)算與通信軟件重點(diǎn)實(shí)驗(yàn)室,合肥 230027)

        3(中國科學(xué)技術(shù)大學(xué) 先進(jìn)技術(shù)研究院,合肥 230027)

        4(安徽新華學(xué)院 信息工程學(xué)院,合肥 230088)

        基于LXC的Android系統(tǒng)虛擬化技術(shù)①

        谷德賀1,2,3,顧乃杰1,2,3,劉博文1,2,3,蘇俊杰1,2,3,賀愛香1,4

        1(中國科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,合肥 230027)

        2(中國科學(xué)技術(shù)大學(xué) 安徽省計(jì)算與通信軟件重點(diǎn)實(shí)驗(yàn)室,合肥 230027)

        3(中國科學(xué)技術(shù)大學(xué) 先進(jìn)技術(shù)研究院,合肥 230027)

        4(安徽新華學(xué)院 信息工程學(xué)院,合肥 230088)

        虛擬化技術(shù)的研究正逐漸從高性能服務(wù)器端轉(zhuǎn)向移動智能設(shè)備領(lǐng)域. 現(xiàn)有的虛擬化方案多是采用多內(nèi)核方案,系統(tǒng)負(fù)載高,效率低. 針對車載系統(tǒng)等平臺多屏顯示以及資源受限等問題,本文提出一種基于容器技術(shù)的Android輕量級虛擬化方案. 該方案通過利用Namespace資源隔離機(jī)制和Cgroup資源分配機(jī)制,使得ARM平臺在資源使用較少的同時,能夠同時啟動多個Android虛擬機(jī),并且各虛擬機(jī)上的屏幕顯示相互獨(dú)立. 測試結(jié)果表明,該方案的內(nèi)存占用率較雙系統(tǒng)方案降低了7%,而平均CPU使用率較原生Android系統(tǒng)僅增加了1%.

        虛擬化技術(shù); 資源隔離; 資源分配; ARM 平臺; 虛擬機(jī)

        近年來云計(jì)算[1]的快速發(fā)展,虛擬化技術(shù)[2]被廣泛應(yīng)用于高性能服務(wù)器,以提高系統(tǒng)資源的利用率. 同時,隨著智能手機(jī)等移動終端的普及[3],智能終端扮演著越來越重要的角色,用戶對視頻、微信、新聞瀏覽等功能的使用開始從PC轉(zhuǎn)移至移動終端. 由于生活和工作等場景的多樣化,用戶不得不攜帶多個終端設(shè)備以滿足不同應(yīng)用場景的需要,例如車載系統(tǒng)上司機(jī)和乘客同時對導(dǎo)航以及娛樂系統(tǒng)的需求. 與此同時,面對惡意廣告、病毒以及隱私信息泄露[4-6]等問題,更多的用戶開始關(guān)注移動平臺[7]的隱私安全性問題.

        通過虛擬機(jī)機(jī)制[8],將多個獨(dú)立且隔離的智能手機(jī)軟件實(shí)例運(yùn)行在同一個ARM硬件上,可以有效解決Android設(shè)備的安全風(fēng)險. 現(xiàn)有的虛擬化方法都對用戶層和內(nèi)核層做了大量地修改,如哥倫比亞大學(xué)提出的Cells模型[9]; 或利用ARM平臺的Hypervisor模式[10],如KVM/ARM架構(gòu)[11]; 或設(shè)計(jì)完整的微內(nèi)核模式,如OKL4的微內(nèi)核模型[12],將宿主系統(tǒng)和客戶機(jī)系統(tǒng)隔離運(yùn)行. 這些方案對于高性能服務(wù)器可能有效,但應(yīng)用于智能手機(jī)主要有兩個問題. 其一,智能手機(jī)資源的受限,運(yùn)行整個額外的操作系統(tǒng)以及用戶空間環(huán)境,將帶來很大的系統(tǒng)開銷,導(dǎo)致系統(tǒng)響應(yīng)速度過慢; 其二,部分方法對內(nèi)核層進(jìn)行大量地修改,導(dǎo)致宿主系統(tǒng)和客戶機(jī)系統(tǒng)很難升級和擴(kuò)展,對于頻繁的Android更新,這將帶來很大的工作量.

        LXC[13]即 Linux Container,是利用 Linux 內(nèi)核容器特性為用戶提供空間接口的開源工具,其通過強(qiáng)大的API和簡單的工具,可以讓用戶輕松創(chuàng)建和管理系統(tǒng)或者應(yīng)用程序容器. LXC利用內(nèi)核支持的資源隔離以及控制機(jī)制,通過對容器的配置,使用lxc-start等工具對容器進(jìn)行控制,可以快速部署,且具有更小的虛擬化開銷等優(yōu)點(diǎn).

        針對移動設(shè)備資源的受限,以及車載系統(tǒng)對于多屏顯示的需求,本文利用LXC開源工具提出一種Android系統(tǒng)輕量級虛擬化多屏顯示方案. 本方案是一種系統(tǒng)級虛擬化方案,通過利用Linux內(nèi)核支持的虛擬化特性,在對內(nèi)核盡可能少的修改前提下,將多個系統(tǒng)獨(dú)立的運(yùn)行在同一個ARM平臺上且擁有不同的顯示屏幕. 本方案中多個系統(tǒng)共用同一個內(nèi)核,其所帶來的系統(tǒng)負(fù)載小,即使在性能較差的平臺也不會影響用戶體驗(yàn),且具有容易部署和可擴(kuò)展性強(qiáng)等優(yōu)勢.

        1 知識背景與相關(guān)工作

        現(xiàn)有的移動虛擬化技術(shù)主要從以下幾個方面來隔離宿主系統(tǒng),分別為操作系統(tǒng)級虛擬化方案、基于Hypervisor監(jiān)管程序方案[14]和基于微內(nèi)核方案[14].

        1.1 基于操作系統(tǒng)級方案

        操作系統(tǒng)級虛擬化將系統(tǒng)的命名空間劃分為不同的虛擬機(jī). 虛擬機(jī)之間共享唯一的系統(tǒng)內(nèi)核以及主機(jī)環(huán)境,每個虛擬機(jī)只保存本地環(huán)境的狀態(tài),本文也是采用此解決方案. Cells[9]是哥倫比亞大學(xué)提出的基于操作系統(tǒng)級虛擬化的解決方案. Cells引入了一種前端虛擬手機(jī)(VP)和多個后臺虛擬手機(jī)的使用模型,使多個VP可以互不干擾、獨(dú)立運(yùn)行; 且基于Namespace思路提出一種新的Device命名空間機(jī)制,使不同設(shè)備具有不同的訪問權(quán)限,例如不可訪問、共享訪問以及互斥訪問,使手機(jī)硬件得到很好的復(fù)用和隔離. 但Cells對Linux內(nèi)核層做了大量的修改,使得其不可能并入Linux主線中. 不同的是,本文在未對內(nèi)核層做大量地修改的情況下,同樣完成了系統(tǒng)需求.

        1.2 基于Hypervisor方案

        KVM/ARM[11]是一個基于ARM平臺Hypervisor模型的完整系統(tǒng)虛擬化解決方案. KVM/ARM與其他虛擬化方案最大的區(qū)別在于大多數(shù)VMM都實(shí)現(xiàn)主要的服務(wù),例如調(diào)度器、內(nèi)存管理以及時鐘等. KVM利用現(xiàn)有 Linux Kernel的功能,以及硬件支持,使得虛擬技術(shù)的系統(tǒng)性能負(fù)載很小.

        KVM/ARM引入一種技術(shù),使其可以在CPU不同特權(quán)模式下運(yùn)行. 通過該技術(shù)利用ARM硬件虛擬化支持進(jìn)入監(jiān)管模式,在統(tǒng)一時間內(nèi)利用內(nèi)核模式運(yùn)行現(xiàn)有的Linux內(nèi)核服務(wù). 該方案中不同系統(tǒng)使用各自的內(nèi)核,且上下文切換帶來的系統(tǒng)消耗較多,不適用資源受限的移動設(shè)備.

        1.3 基于微內(nèi)核方案

        微內(nèi)核[15]采用最小化原則,在保證能夠?qū)崿F(xiàn)全部功能的前提下使內(nèi)核盡量的小. OKL4[12]是從Open Kernel Labs出現(xiàn)的一種基于微內(nèi)核的虛擬化技術(shù).OKL4通過構(gòu)建一種簡單的內(nèi)核,提供比Hypervisor監(jiān)管程序的更高效率,而且設(shè)計(jì)的微內(nèi)核具有一定的通用性,可以在多平臺以及多系統(tǒng)上構(gòu)建. 通過vCPUs、vMMU、vIRQs以及TLB相應(yīng)的硬件支持,微內(nèi)核足夠小,并可以正確的支持所有功能. 使得通過OKL4的系統(tǒng)負(fù)載足夠小. 但因?yàn)槠湫枰O(shè)備支持以及仿真支持,對于目前日益多元化的移動設(shè)備來說,是一個繁重的硬件設(shè)備要求,也增加了硬件的成本.

        2 ARM平臺移動虛擬化的設(shè)計(jì)方案

        針對車載系統(tǒng)等平臺多屏顯示以及資源受限等問題,本文提出一種輕量級虛擬化方案. 該方案主要包括系統(tǒng)的總體架構(gòu)以及多屏顯示方案.

        2.1 系統(tǒng)架構(gòu)

        利用Linux內(nèi)核中Namespace的資源隔離機(jī)制和Cgroup[16]的資源控制機(jī)制,以及輕量級容器工具LXC的特性,本文采用操作系統(tǒng)級虛擬化解決方案. 通過LXC工具對容器系統(tǒng)進(jìn)行管理以及操作,利用內(nèi)核機(jī)制的支持,LXC工具小且功能完善等優(yōu)勢,完成多系統(tǒng)虛擬化的需求.

        命名空間將LXC啟動的進(jìn)程隔離放入獨(dú)立的命名空間中,通過Android init進(jìn)程初始化Android系統(tǒng),形成獨(dú)立的一組進(jìn)程視圖. 同時Cgroup機(jī)制負(fù)責(zé)不同系統(tǒng)的資源的配置,分配CPU節(jié)點(diǎn)和Memory節(jié)點(diǎn),以及監(jiān)控容器空間內(nèi)系統(tǒng)的運(yùn)行狀況. 這樣在容器空間內(nèi)的進(jìn)程只能感受到當(dāng)前容器的狀況.

        Cgroups可以為不同用戶層面的資源管理,提供一個統(tǒng)一化的接口. 從單個進(jìn)程的資源控制到操作系統(tǒng)層面,Cgroup 主要提供三個主要功能: 1) 資源限制:Cgroup可以對進(jìn)程組使用的資源總額進(jìn)行限制; 2) 優(yōu)先級分配: 通過分配CPU時間片數(shù)量及硬盤IO帶寬大小,實(shí)際上就相當(dāng)于控制進(jìn)程的優(yōu)先級; 3) 資源統(tǒng)計(jì): Cgroup可以統(tǒng)計(jì)系統(tǒng)的資源使用量,如CPU使用時長、內(nèi)存使用量等. 本文的架構(gòu)如圖1所示.

        圖1 系統(tǒng)架構(gòu)圖

        基于宿主機(jī)以及Android系統(tǒng)的特性,底層硬件共享同一個CPU、Memory、GPU等設(shè)備,但不同系統(tǒng)擁有不同的顯示設(shè)備以及輸入輸出設(shè)備,多個系統(tǒng)間共享同一個Linux內(nèi)核,需要針對不同的顯示以及輸入輸出設(shè)備作設(shè)備,設(shè)計(jì)隔離以及復(fù)用方案,而GPU與CPU不同,其本身具有隔離性,不同應(yīng)用程序均持有獨(dú)立的顯示上下文信息,不需要進(jìn)行單獨(dú)的處理. 在宿主機(jī)中配置LXC工具,通過LXC工具就可以同時啟動不同的系統(tǒng).

        本方案采用LXC作為容器虛擬化工具,通過利用內(nèi)核中命名空間的隔離機(jī)制和進(jìn)程資源控制組對資源進(jìn)行劃分,使得宿主系統(tǒng)與不同客戶機(jī)系統(tǒng)能夠隔離,相互不影響,并且流暢地運(yùn)行. 該方案使得單個硬件設(shè)備即可運(yùn)行多個虛擬系統(tǒng),每個系統(tǒng)運(yùn)行標(biāo)準(zhǔn)的Andoird環(huán)境,每個Android系統(tǒng)運(yùn)行著未修改的Android應(yīng)用程序. 每個虛擬系統(tǒng)完全隔離,不能檢查,篡改或者訪問任何其他的虛擬機(jī).

        每個虛擬系統(tǒng)可以被創(chuàng)建和配置通過PC機(jī)下載到開發(fā)板. 虛擬機(jī)系統(tǒng)可以被用戶刪除,但是其配置權(quán)限是通過密碼保護(hù)的,只能擁有權(quán)限的用戶才能在PC 機(jī)上改變. 例如,對于管理員可以創(chuàng)建虛擬機(jī),下載或使其從設(shè)備上移除,但普通用戶不能重新配置,這對于虛擬機(jī)系統(tǒng)來說有很好的安全保障.

        2.2 Android顯示框架設(shè)計(jì)

        由于本文中所使用的硬件平臺是共享單個CPU、GPU以及內(nèi)存設(shè)備,但擁有兩塊不同的顯示屏幕,因此對多個系統(tǒng)同時顯示在不同屏幕上單獨(dú)設(shè)計(jì)方案.

        Android采用分層的架構(gòu)設(shè)計(jì),將系統(tǒng)分為四層:應(yīng)用層,應(yīng)用程序框架層,運(yùn)行庫存,Linux 內(nèi)核層.Android對Linux內(nèi)核驅(qū)動程序進(jìn)行封裝,提出硬件抽象層,Android的顯示系統(tǒng)硬件抽象層提供的是Gralloc,分別負(fù)責(zé)對framebuffer以及幀緩沖區(qū)的分配和釋放.Linux內(nèi)核驅(qū)動層提供了FrameBuffer顯示驅(qū)動程序,其設(shè)備驅(qū)動程序的設(shè)備文件通常放在/dev/graphics/fb0或者是/dev/fb0.

        利用不同顯示設(shè)備在系統(tǒng)中存在不同的設(shè)備節(jié)點(diǎn),以及宿主Linux和客戶機(jī)Android系統(tǒng)的特性,提出雙屏顯示方案. 其架構(gòu)如圖2. 對于宿主Linux系統(tǒng)使用QT交互界面默認(rèn)使用/dev/fb0對應(yīng)的屏幕設(shè)備,Android客戶機(jī)系統(tǒng)通過LXC容器啟動,將Android的顯示畫面輸出到fb1對應(yīng)的屏幕中,從而實(shí)現(xiàn)雙屏同時顯示Qt Linux系統(tǒng)與Android系統(tǒng)畫面.

        在Linux中,FB的使用模式是通過兩種的訪問類型: mmap和標(biāo)準(zhǔn)的ioctl操作. 不同虛擬機(jī)對底層不同的FrameBuffer驅(qū)動進(jìn)行映射,同時底層FrameBuffer的驅(qū)動在內(nèi)存分配上也是相互隔離的. 這樣就使得不同系統(tǒng)的訪問流相互隔離,從而達(dá)到顯示隔離的效果.最后GPU將渲染的數(shù)據(jù)直接寫入對應(yīng)的buffer中,與CPU處理的內(nèi)存并不同,GPU是直接對FrameBuffer進(jìn)行操作,與CPU處理的數(shù)據(jù)是相互獨(dú)立的. 相較于在Android的服務(wù)層做修改,本方案不會改變Android的通用接口,使得實(shí)現(xiàn)方案更加具有通用性. 同時本方案將Android系統(tǒng)應(yīng)用程序的數(shù)據(jù)直接顯示在fb1上,使得多系統(tǒng)顯示數(shù)據(jù)得到很好的隔離. 并且不同系統(tǒng)均可以正常顯示,相互之間沒有影響.

        圖2 雙屏顯示方案

        3 實(shí)現(xiàn)細(xì)節(jié)

        為了實(shí)現(xiàn)當(dāng)前的設(shè)計(jì)方案,需要完成以下工作:

        (1) 對 Linux kernel進(jìn)行定制,開啟 Namespace 機(jī)制和Cgroup機(jī)制在內(nèi)核中的選項(xiàng). 使用指定的交叉編譯工具,移植LXC工具到宿主系統(tǒng)中.

        (2) 制作Android容器文件系統(tǒng),使得LXC可以啟動客戶機(jī)系統(tǒng).

        (3) 完成Android系統(tǒng)對顯示的需要,對不同系統(tǒng)顯示進(jìn)行隔離.

        3.1 LXC移植

        使用LXC的工具的前提是Linux內(nèi)核支持Namespace機(jī)制和Cgroup機(jī)制,雖然現(xiàn)在Namespace和Cgroup加入到內(nèi)核中,但是其默認(rèn)功能是沒有開啟的.需要手動打開Kernel對應(yīng)的選項(xiàng),并重新編譯內(nèi)核,目前使用的Kernel版本是3.4.35.

        由于使用定制的ARM平臺交叉工具,所以編譯過程會和普通GCC編譯不同,需要的依賴項(xiàng)也不同. 為了提高通用性,在腳本中加入對各個平臺依賴的判斷.這里使用的編譯工具是armv6-gcc,為了使LXC工具正常編譯,系統(tǒng)需要安裝automake等工具,提前編譯libcap庫. 但為了并對LXC源碼進(jìn)行了修改,其主要修改的內(nèi)容有:

        (1) 與 Android 系統(tǒng)不兼容部分,例如 setenv,share,tmpfile 等函數(shù),在 Linux 平臺與 Android 平臺中,其基礎(chǔ)函數(shù)庫參數(shù)以及實(shí)現(xiàn)方式不同,從而影響LXC正常執(zhí)行.

        (2) 無法正常編譯的問題,例如部分宏出現(xiàn)未定義問題,需要增加相應(yīng)的頭文件.

        (3) 相關(guān)邏輯的修改,使得可以啟動Android容器,且不需要修改通用的API接口.

        執(zhí)行make以及make install,將交叉編譯好的LXC工具移植到ARM平臺的機(jī)器中,通過使用LXC工具集中的lxc-checkconfig來檢測kernel選項(xiàng)是否打開以及其他功能是否運(yùn)行正常. 并且可以通過嘗試創(chuàng)建一些模板容器,檢查LXC是否可以正常運(yùn)行.

        3.2 容器文件系統(tǒng)制作

        根據(jù)LXC容器創(chuàng)建過程以及Android系統(tǒng)啟動分析,由于存儲容量有限,且原生的Anroid文件系統(tǒng)需相應(yīng)的修改,才可以在Linux Container中正常的運(yùn)行.

        宿主機(jī)系統(tǒng)采用普通的嵌入式Linux系統(tǒng),則為了啟動Android客戶機(jī)系統(tǒng),使用LXC啟動命令(lxcstart)將客戶機(jī)系統(tǒng)順利啟動,需要在Linux系統(tǒng)中創(chuàng)建容器系統(tǒng). 在LXC工具指定的路徑建立容器的名稱,不同的客戶機(jī)的文件目錄是相互隔離的. 同時也可以通過設(shè)置共享相應(yīng)的客戶機(jī)的庫文件等. 不同的目錄對應(yīng)不同的客戶機(jī)系統(tǒng),這樣運(yùn)行時不同的客戶機(jī)系統(tǒng)之間無法感知其他系統(tǒng)的文件系統(tǒng).

        主要的文件目錄如圖3,對于宿主機(jī)系統(tǒng)都有其容器名,其中rootfs為其Android客戶機(jī)系統(tǒng)的目錄文件. 其目錄下包含Android系統(tǒng)啟動必須的文件,修改原Android系統(tǒng)的init.rc文件,關(guān)閉不必要的服務(wù),修改其創(chuàng)建的設(shè)備節(jié)點(diǎn)用來與宿主系統(tǒng)隔離和復(fù)用,修改掛載的文件系統(tǒng),復(fù)用宿主系統(tǒng)的文件,提升低端設(shè)備的擴(kuò)展性,以及隔離需要隔離的文件目錄. 通過自動化腳本配置容器信息,提升容器配置的通用性.

        3.3 雙屏顯示

        由于本文中ARM平臺的硬件設(shè)備是一個CPU,Memory但是擁有兩個屏幕硬件設(shè)備,在Linux中每個應(yīng)用程序通過mmap系統(tǒng)調(diào)用,將顯存映射到應(yīng)用程序?qū)?yīng)進(jìn)程的虛擬地址空間中,可以直接將所需要顯示的內(nèi)容直接寫入內(nèi)存空間,通過實(shí)現(xiàn)一系列文件操作接口,使得應(yīng)用程序可以直接操作字符設(shè)備,最終LCD控制器自動將顯存中的內(nèi)容顯示在屏幕設(shè)備中.

        圖3 Android 容器目錄文件結(jié)構(gòu)

        Android系統(tǒng)在設(shè)計(jì)之初只考慮單屏的存在,因此對于移動設(shè)備來說,因?yàn)橹淮嬖谝粋€屏幕,在字符設(shè)備節(jié)點(diǎn)中默認(rèn)只有/dev/fb0或者/dev/graphics/fb0存在. 對于 Android 應(yīng)用程序,通過 SurfaceFlinger服務(wù),調(diào)用libgl庫進(jìn)行圖像處理,將顯示數(shù)據(jù)交給硬件邏輯層Gralloc,最終底層FrameBuffer驅(qū)動以及GPU驅(qū)動將需要顯示的內(nèi)容刷新在顯示設(shè)備中. Gralloc對于復(fù)雜的顯示驅(qū)動,保證Android上層應(yīng)用顯示接口不變. 因此選擇對Android硬件抽象層Gralloc中作出相應(yīng)的修改,實(shí)現(xiàn)Android客戶機(jī)系統(tǒng)可以正常顯示在第二塊屏幕上.

        通過對Android系統(tǒng)的源碼分析,用戶空間使用FrameBuffer設(shè)備,首先通過load加載Gralloc模塊.從Gralloc層打開fb設(shè)備的流程可知,在保證Android顯示正常,只需要對Gralloc模塊加載的fb設(shè)備作出相應(yīng)的修改就可以實(shí)現(xiàn)雙屏顯示的方案,因此在該硬件抽象層加入相應(yīng)的邏輯修改,其主要工作為:

        (1) 將Gralloc模塊關(guān)于打開fb0設(shè)備的邏輯做相應(yīng)的修改,使得加載Gralloc模塊時將不是默認(rèn)打開fb0設(shè)備,使得Android設(shè)備可以在fb1對應(yīng)的顯示屏能夠正常顯示.

        (2) 拒絕容器打開的客戶機(jī)系統(tǒng)對Linux中對應(yīng)fb0的字符設(shè)備節(jié)點(diǎn)打開的權(quán)限,使得從客戶機(jī)系統(tǒng)角度來看也只有一個顯示設(shè)備節(jié)點(diǎn)存在.

        (3) 在LXC啟動容器的流程中,加入對fb1設(shè)備加載的邏輯. 考慮到fb1設(shè)備一直打開,損失移動設(shè)備的電量,在lxc-start的啟動流程中加入對fb1設(shè)備加載的相應(yīng)邏輯,達(dá)到節(jié)約能耗的目的.

        4 系統(tǒng)成果以及功能測試

        實(shí)驗(yàn)測試環(huán)境是在ARM平臺車載系統(tǒng)開發(fā)板上,使用 Linux kernel 3.4.35 版本,Android 對應(yīng) 4.2.2 版本,基于LXC1.0.7的虛擬化解決方案,其硬件實(shí)驗(yàn)環(huán)境為:雙核 ARM Cortex A7、1GB DRAM、8GB eMMC. 因其平臺硬件資源有限,只啟動雙系統(tǒng)進(jìn)行測試.

        4.1 功能測試

        通過燒制系統(tǒng)集成Image,打開電源開關(guān),宿主Linux系統(tǒng)和客戶機(jī)Android系統(tǒng)同時啟動,宿主系統(tǒng)顯示其開機(jī)Logo,Android系統(tǒng)在另一個顯示器顯示“ANDROID”字樣,代表兩個系統(tǒng)通過宿主系統(tǒng)的命令啟動成功; Android系統(tǒng)通過LXC工具正常啟動,且通過兩個屏幕分別顯示不同系統(tǒng)界面,互相隔離相互不影響,表明雙屏顯示方案正常; 且通過45項(xiàng)系統(tǒng)以及硬件功能的Sanity Test測試.

        同時通過多次的開關(guān)機(jī)重啟,雙系統(tǒng)同時畫面幾乎同時啟動且正常顯示,表示其功能正常且穩(wěn)定. 且鼠標(biāo),鍵盤輸出輸出設(shè)備不會在Android系統(tǒng)中響應(yīng),只能點(diǎn)擊和響應(yīng)QT的界面,同時對于Android系統(tǒng)使用自帶的觸摸屏去觸摸點(diǎn)擊,可以正常交互和顯示.

        4.2 性能測試

        通過讀取/proc/meminfo信息統(tǒng)計(jì)不同系統(tǒng)情況下,內(nèi)存的使用的情況,在開機(jī)30分鐘穩(wěn)定后得到的數(shù)據(jù)情況如圖4.

        圖4 內(nèi)存使用情況

        我們根據(jù)2016年Google熱門app榜單,選取社交類、影音類、游戲類三類,分別測試微信、音樂播放器、部落沖突,代表不同的應(yīng)用場景,將虛擬化后的CPU使用率與原生Android的CPU使用率進(jìn)行對比,得到10秒的時間內(nèi)的增長率,詳情如表1所示.

        從表中可以看出,不同種類的應(yīng)用的CPU使用率的增長情況不同,但總體情況類似. 相比較來說可以看出原生的Android系統(tǒng)在啟動APP時的速度較快一些,不過兩者的CPU使用率相差不大,在實(shí)際使用的場景下基本感受不到兩者的差距. 根據(jù)三種應(yīng)用的使用率情況看,其虛擬化后的Android系統(tǒng)的平均CPU使用率僅比原生系統(tǒng)高1%,性能與原生系統(tǒng)較相近.

        表1 三類 app 的 CPU 利用率變化

        5 結(jié)束語

        針對車載系統(tǒng)等平臺多屏顯示的需求,本文提出一種基于容器技術(shù)Android輕量級虛擬化方案. 相較于傳統(tǒng)多核虛擬化方案,本方案只需要單個內(nèi)核即可支持多個Android容器,具有更低的資源開銷和更高的性能. 從而實(shí)現(xiàn)用戶對不同場景以及隱私信息安全的需求. 測試結(jié)果表明: 在ARM 平臺上,該方案的內(nèi)存占用率較雙系統(tǒng)方案降低了7%,而平均CPU使用率較原生Android系統(tǒng)僅增加了1%. 但是本文所提出的雙屏顯示方案還不夠完善,對不同輸入輸出設(shè)備的隔離和復(fù)用采取不同的策略,下一步的將圍繞隔離以及復(fù)用框架的通用性展開進(jìn)一步工作.

        1Armbrust M,Fox A,Griffith R,et al. A view of cloud computing. Communications of the ACM,2010,53(4): 50–58. [doi:10.1145/1721654]

        2陳全,鄧倩妮. 云計(jì)算及其關(guān)鍵技術(shù). 計(jì)算機(jī)應(yīng)用,2009,29(9): 2562–2567.

        3TrendForce: 2015年全球智能手機(jī)出貨12.93億部,華為躍升全球第三并突破一億部. http://press.trendforce.cn/press/20160114-2266.html. [2016-01-14].

        4Enck W,Ongtang M,McDaniel P. Understanding android security. IEEE Security & Privacy,2009,7(1): 50–57.

        5楊健,汪海航,王劍,等. 云計(jì)算安全問題研究綜述. 小型微型計(jì)算機(jī)系統(tǒng),2012,33(3): 472–479.

        6蔣紹林,王金雙,張濤,等. Android 安全研究綜述. 計(jì)算機(jī)應(yīng)用與軟件,2012,29(10): 205–210.

        7Android Platform. https://developer.android.com/about/android.html.

        8Aguiar A,Hessel F. Current techniques and future trends in embedded system’s virtualization. Software: Practice and Experience,2012,42(7): 917–944. [doi: 10.1002/spe.v42.7]

        9Andrus J,Dall C,van’t Hof A,et al. Cells: A virtual mobile smartphone architecture. Proc. of the Twenty-Third ACM Symposium on Operating Systems Principles. Cascais,Portugal. 2011. 173–187.

        10Uhlig R,Neiger G,Rodgers D,et al. Intel virtualization technology. Computer,2005,38(5): 48–56. [doi: 10.1109/MC.2005.163]

        11Varanasi P. Implementing Hardware-supported virtualization in OKL4 on ARM[Ph. D. thesis]. New South Wales: University of New South Wales,2010.

        12Kivity A,Kamay Y,Laor D,et al. kvm: the Linux virtual machine monitor. Proc. of the Linux Symposium. 2007.225–230.

        13LXC-Linux Containers. https://linuxcontainers.org/,2014.

        14Chen XY. Smartphone virtualization: Status and challenges.2011 International Conference on Electronics,Communications and Control (ICECC). Ningbo,China. 2011. 2834–2839.

        15毛德操,胡希明. Linux 內(nèi)核源代碼情景分析 (上冊). 杭州:浙江大學(xué)出版社,2001.

        16Rosen R. Linux containers and the future cloud. Linux Journal,2014,2014(240): 3.

        Virtualization Technology of Android System Based on LXC

        GU De-He1,2,3,GU Nai-Jie1,2,3,LIU Bo-Wen1,2,3,SU Jun-Jie1,2,3,HE Ai-Xiang1,4

        1(School of Computer Science and Technology,University of Science and Technology of China,Hefei 230027,China)
        2(Anhui Province Key Laboratory of Computing and Communication Software,University of Science and Technology of China,Hefei 230027,China)
        3(Institute of Advanced Technology,University of Science and Technology of China,Hefei 230027,China)
        4(Institute of Information Engineering,Anhui XinHua University,Hefei 230088,China)

        The virtualization technology research is gradually moving from high-performance server to mobile intelligent devices. Existing virtualization solutions are mostly multi-core solution with high system overhead and low efficiency.This paper presents a lightweight virtualization scheme based on Linux container for multi-screen display and resource limitation of vehicle system. Our program,through the use of Namespace resource isolation mechanism and Cgroup resource control mechanism,can start several Android virtual machines on the ARM platform at the same time,while displaying on different screens and running independently. The performance test results show that on the ARM platform,the program uses less than 7% of the memory of the two systems,and the average CPU usage after virtualization is only 1% higher than the native Android system.

        virtualization technology; resource isolation; resource control; ARM platform; virtual machine

        谷德賀,顧乃杰,劉博文,蘇俊杰,賀愛香.基于 LXC 的 Android 系統(tǒng)虛擬化技術(shù).計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(12):58–63. http://www.c-sa.org.cn/1003-3254/6110.html

        安徽省自然科學(xué)基金(1408085MKL06); 高等學(xué)校學(xué)科創(chuàng)新引智計(jì)劃項(xiàng)目(B07033)

        2017-03-15; 修改時間: 2017-03-31; 采用時間: 2017-04-07

        猜你喜歡
        客戶機(jī)內(nèi)核虛擬化
        Reducing the global cancer burden with gastrointestinal screening: China’s 30 years practice
        萬物皆可IP的時代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        基于OpenStack虛擬化網(wǎng)絡(luò)管理平臺的設(shè)計(jì)與實(shí)現(xiàn)
        電子制作(2019年10期)2019-06-17 11:45:10
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        對基于Docker的虛擬化技術(shù)的幾點(diǎn)探討
        電子制作(2018年14期)2018-08-21 01:38:20
        虛擬化技術(shù)在計(jì)算機(jī)技術(shù)創(chuàng)造中的應(yīng)用
        電子測試(2017年11期)2017-12-15 08:57:56
        存儲虛擬化還有優(yōu)勢嗎?
        瘦客戶機(jī):安全與便捷的選擇
        精品国产福利在线观看网址2022 | 亚洲一二三四五中文字幕| 青青草精品视频在线播放| 无码国产69精品久久久久孕妇| 国产精品成人av在线观看| 老熟女一区二区免费| 中文字幕东京热一区二区人妻少妇| 国产精品无码制服丝袜| 熟妇丰满多毛的大隂户| 久久免费大片| 国产人妖一区二区av| 国产最新女主播福利在线观看| 蜜桃久久精品成人无码av| 欧美人妻日韩精品| 中文字幕乱码亚洲美女精品一区| 中文字幕隔壁人妻欲求不满| 色偷偷偷久久伊人大杳蕉| 亚洲天堂免费视频| 亚洲处破女av一区二区| 精品国产一区二区三区三| 欧美a级情欲片在线观看免费 | 日本综合视频一区二区| 少妇性俱乐部纵欲狂欢电影| 97人人超碰国产精品最新o| 国产亚洲曝欧美不卡精品| 国产一级黄色录像大片| 777米奇色8888狠狠俺去啦| 国产精品11p| 亚洲国产成人精品一区刚刚| 真实夫妻露脸自拍视频在线播放 | 国产高清国内精品福利99久久 | 国产又大大紧一区二区三区| 隔壁老王国产在线精品| 装睡被陌生人摸出水好爽| 人妻中文字幕不卡精品| 久久中文字幕暴力一区| 亚洲avav天堂av在线网毛片| 亚洲成人免费观看| 国产精品美女自在线观看| 人妻少妇-嫩草影院| 国产精品亚洲综合色区韩国|