服務(wù)器和桌面機虛擬化一直占據有相當大的版面,隨著(zhù)云計算和存儲的興起,虛擬化技術(shù)更 被熱捧,還有一種虛擬化技術(shù)發(fā)展迅猛--嵌入式虛擬化。嵌入式虛擬化是指嵌入式系統中部署虛擬機監控程序。盡管嵌入式設備一直受到嚴格的資源限制,但今天 的設備范圍廣泛--從擁有服務(wù)器級功能(比如對虛擬化的硬件支持)的強大處理器到擁有計較少容量和資源的功耗優(yōu)化系統。如果向嵌入式系統添加一個(gè)虛擬機監 控程序,將添加靈活性和一些高級功能,將嵌入式設備轉變?yōu)橐环N新型系統。
嵌入式領(lǐng)域包含幾個(gè)有用的虛擬化應用領(lǐng)域:移動(dòng)設備、安全性?xún)群撕筒l(fā)性嵌入式操作系統。本文介紹了智能終端中虛擬化技術(shù)的應用。
(一)虛擬化技術(shù)概述
虛擬化是指計算機軟件在一個(gè)虛擬的平臺上而不是真實(shí)的硬件平臺上運行。虛擬化技術(shù)可以 擴大硬件的容量,簡(jiǎn)化軟件的重新配置過(guò)程。其中CPU的虛擬化可以單CPU模擬多CPU并行運行,允許一個(gè)平臺同時(shí)運行多個(gè)操作系統,并且應用程序可以在 相互獨立的空間內運行而互不影響。虛擬化技術(shù)在降低硬件成本的同時(shí),還可以顯著(zhù)提高系統的工作效率和安全性。
虛擬化系統的實(shí)現通常是在操作系統和硬件之間加入一個(gè)虛擬機監控程序,稱(chēng)為 Hypervisor。由Hypervisor主要負責各個(gè)操作系統之間的硬件資源協(xié)調。虛擬機監控程序是一種特殊操作系統,直接在裸機上 運行(針對完全虛擬化技術(shù))。虛擬機監控程序創(chuàng )建一個(gè)底層硬件平臺抽象,一個(gè)或多個(gè)虛擬機(VM)共享這個(gè)底層硬件平臺。在這種環(huán)境中,VM 只是操作系統及其應用程序的容器,一個(gè) VM 與虛擬機監控程序上運行的其他 VMs 隔離,這支持多個(gè)操作系統或多個(gè)配置不同的相似操作系統。
智能終端虛擬化技術(shù)也是通過(guò)Hypervisor來(lái)實(shí)現多個(gè)操作系統的硬件資源共享。現有的虛擬化技術(shù)方案主要有VirtualLogix的VLX、Open Kernel Labs的OKL4等,這些技術(shù)方案雖然實(shí)現了不同的Hypervisor,但總體結構相似。
(二)智能終端領(lǐng)域的虛擬化
虛擬化技術(shù)使得軟件和硬件通過(guò)虛擬化技術(shù)實(shí)現了較松的耦合,系統軟件只需要實(shí)現很少的 改動(dòng)就能移植到新的硬件平臺上。智能終端可以在虛擬平臺上運行多個(gè)相互隔離的操作系統,提高手機系統的安全性。如將重要數據和安全需求高的應用專(zhuān)門(mén)隔離保 護起來(lái),即使某操作系統上的應用軟件甚至整個(gè)智能操作系統因中毒等崩潰,虛擬化技術(shù)可以將重要數據隔離保護起來(lái)。另外虛擬化技術(shù)還可能減少硬件成本,如果 一顆CPU計算能力足夠,可以在一顆CPU上模擬多顆邏輯CPU的執行,將智能操作系統和基帶的RTOS運行在同一個(gè)CPU上,減少主芯片數量,節約大量 成本。多核平臺中也可以通過(guò)將CPUs虛擬成虛擬CPU池,所有軟件部分都通過(guò)虛擬化技術(shù)共享這些硬件資源。
如果虛擬化技術(shù)在嵌入式領(lǐng)域高度發(fā)展,應該可以實(shí)現軟硬件的極松耦合--所有軟件(操作系統,WIFi、藍牙等微控制程序)共享硬件平臺、運行在虛擬硬件層,邏輯硬件間形成統一的邏輯接口,硬件平臺支持方便的替換、升級。那時(shí),智能終端將可任意定制。
(三)ARM架構上基于OKL4的Android虛擬化
OKL4是Open Kernel Labs公司的一款虛擬化產(chǎn)品,作為針對嵌入式系統的Hypervisor,OKL4支持經(jīng)過(guò)虛擬化處理的操作系統(包括智能操作系統和RTOS),一些 操作系統的內核組件也進(jìn)行虛擬化處理,獨立運行在OKL4的輕量級執行環(huán)境下。OKL4既支持粗粒度的操作系統虛擬機,又支持細粒度的輕量級執行環(huán)境。驅 動(dòng)程序或文件系統等內核組件可直接運行在輕量級執行環(huán)境中,其它子系統可以共享該組件,提高了系統的安全性,也提高代碼的復用率。
虛擬機VMM(虛擬機監控器)運行在物理CPU的最高特權級,對物理資源虛擬的三個(gè)主要任務(wù):處理器虛擬化、內存虛擬化和I/O虛擬化。本節通過(guò)CPU虛擬化、內存虛擬化介紹ARM架構上基于OKL4的虛擬化Android。
1,CPU虛擬化的設計
OKL4 Hypervisor運行在特權級(6 種特權模式)上,負責管理CPU資源,負責虛擬機的調度和切換,而輕量級執行環(huán)境和虛擬機均位于用戶(hù)模式下,使用OKL4提供的IPC機制進(jìn)行通信。
在基于OKL4的虛擬化Android系統中,當Android試圖訪(fǎng)問(wèn)CPU寄存器 時(shí),該請求不會(huì )真正發(fā)生在物理寄存器上,相反,OKL4會(huì )將訪(fǎng)問(wèn)定位到“虛擬寄存器”。根據不同的處理器體系結構,OKL4定義了一套存放在內存中的“虛 擬寄存器”,這些虛擬寄存器作為線(xiàn)程的本地變量位于線(xiàn)程的用戶(hù)線(xiàn)程控制塊中。通過(guò)“虛擬寄存器”,Android不會(huì )訪(fǎng)問(wèn)到真實(shí)的物理資源,從而實(shí)現了操 作系統與CPU資源的隔離。
2,虛擬內存管理
在OKL4虛擬化系統中,Android操作系統使用的內存地址空間其實(shí)是OKL4建 立的虛擬地址空間,是由一些物理內存映射而生成的虛擬內存。在OKL4 Hypervisor啟動(dòng)時(shí),一個(gè)稱(chēng)為_(kāi)_okl4_environ的全局變量會(huì )被初始化,__okl4_environ的成員 okl4_virtmem_item為一個(gè)結構體數組,它代表了各個(gè)虛擬化子系統(包括操作系統和虛擬化組件)的虛擬內存地址空間。子系統可以通過(guò) OKL4提供的接口OKL4_ENV_GET_ STATIC()訪(fǎng)問(wèn)該結構體數組,獲取虛擬內存地址。