很多時(shí)候聽(tīng)說(shuō)Hypervisor,但是對(duì)底層軟件技術(shù)不了解的人感覺(jué)挺神秘。本篇文章簡(jiǎn)單介紹下Hypervisor的基本概念,另外介紹下電源管理在Hypervisor之上多OS間怎么應(yīng)用。
1. Hypervisor概念介紹
虛擬機(jī)管理器,又稱(chēng)Hypervisor ,也稱(chēng)為虛擬機(jī)監(jiān)控程序(VMM),其處于SoC 硬件平臺(tái)之上,將實(shí)體資源(如 CPU、內(nèi)存、存儲(chǔ)空間、網(wǎng)絡(luò)適配器、外設(shè)等 ) 轉(zhuǎn)換為虛擬資源,按需分配給每個(gè)虛擬機(jī),允許它們獨(dú)立地訪問(wèn)已授權(quán)的虛擬資源。
Hypervisor實(shí)現(xiàn)了硬件資源的整合和隔離,使應(yīng)用程序既能共享CPU等物理硬件,也能依托不同的內(nèi)核環(huán)境和驅(qū)動(dòng)運(yùn)行,從而滿足現(xiàn)代復(fù)雜軟硬件系統(tǒng)多元化應(yīng)用場(chǎng)景需求。目前,通常使用兩種類(lèi)型的管理程序:
Type 1:裸機(jī)虛擬機(jī)管理程序:一種在硬件上本機(jī)運(yùn)行的管理程序。
Type 2:托管虛擬機(jī)監(jiān)控程序:此類(lèi)型的虛擬機(jī)監(jiān)控程序必須由另一個(gè)操作系統(tǒng)托管,并且僅負(fù)責(zé)使用主機(jī)操作系統(tǒng)可用的資源來(lái)虛擬化客戶操作系統(tǒng)。
類(lèi)型 | 優(yōu)點(diǎn) | 缺點(diǎn) |
---|---|---|
Type 1 | 不必預(yù)先加載底層操作系統(tǒng),直接訪問(wèn)底層硬件而無(wú)需其他軟件(例如操作系統(tǒng)和設(shè)備驅(qū)動(dòng)程序),速度快直接在物理硬件上運(yùn)行相對(duì)較安全,因?yàn)?strong>裸機(jī)虛擬機(jī)管理程序可避免操作系統(tǒng)通常存在的安全問(wèn)題和漏洞。這可確保每個(gè)訪客VM與惡意軟件和活動(dòng)保持邏輯隔離。 | 移植成本較高 |
Type 2 | 通用性強(qiáng),好移植 | 底層操作系統(tǒng)的存在會(huì)引入不可避免的延遲,因?yàn)樗性摴芾沓绦虻幕顒?dòng)和每個(gè)VM的工作都必須通過(guò)主機(jī)操作系統(tǒng)。主機(jī)操作系統(tǒng)中的任何安全問(wèn)題或漏洞都可能會(huì)危及在其上運(yùn)行的所有虛擬機(jī)。因此,Type2管理程序通常不用于數(shù)據(jù)中心計(jì)算,并且僅用于客戶端或最終用戶系統(tǒng),其中性能和安全性較少受到關(guān)注。 |
VMM首先需要對(duì)CPU、內(nèi)存、中斷等資源進(jìn)行管理,并提供對(duì)應(yīng)虛擬化功能;按照I/O設(shè)備驅(qū)動(dòng)的布局,又可以分為Hypervisor模型和混合模型;
Hypervisor模型:VMM設(shè)備驅(qū)動(dòng)提供物理設(shè)備驅(qū)動(dòng)管理,并向上提供服務(wù);
混合模型:VMM只提供必要的CPU資源管理,由Guest Server OS提供設(shè)備管理和虛擬化服務(wù)。
Type 1和2的區(qū)別就是管理硬件的程序放OS還是OS之下,全放OS就是Type 2,全放OS之下就是Type 1.
驅(qū)動(dòng)程序放OS里面的話會(huì)引起兩個(gè)OS直接通信的開(kāi)銷(xiāo),全放OS之下VMM的話,VMM驅(qū)動(dòng)開(kāi)發(fā)工作量較大,因?yàn)镺S里面的驅(qū)動(dòng)基本就是現(xiàn)成的,VMM里面很大可能沒(méi)可以抄的驅(qū)動(dòng)。
參考Hypervisor模型:QNX
參考混合模型:代表有
[Xen](https://xenproject.org/),
Intel的[Acrn](https://projectacrn.org/),
以及國(guó)內(nèi)的[minos](https://github.com/minosproject/minos),
和[bao-hypervisor](https://github.com/bao-project/bao-hypervisor)
2. 汽車(chē)軟件中的Hypervisor應(yīng)用
Hypervisor處于 SoC 硬件平臺(tái)之上,將實(shí)體資源(如 CPU、內(nèi)存、存儲(chǔ)空間、網(wǎng)絡(luò)適配器、外設(shè)等 ) 轉(zhuǎn)換為虛擬資源,按需分配給每個(gè)虛擬機(jī),允許它們獨(dú)立地訪問(wèn)已授權(quán)的虛擬資源。Hypervisor 實(shí)現(xiàn)了硬件資源的整合和隔離,使應(yīng)用程序既能共享 CPU 等物理硬件,也能依托不同的內(nèi)核環(huán)境和驅(qū)動(dòng)運(yùn)行,從而滿足汽車(chē)領(lǐng)域多元化應(yīng)用場(chǎng)景需求。
為什么汽車(chē)中迫切需求Hypervisor?
汽車(chē)上有三個(gè)域:車(chē)身域、座艙域、智駕域。也就是說(shuō)有三個(gè)OS運(yùn)行在復(fù)雜的SoC上。在域融合的同時(shí),要保證關(guān)鍵業(yè)務(wù)的安全可靠,也要考慮應(yīng)用生態(tài)的可持續(xù)性兼容,這就需要有資源隔離技術(shù)來(lái)支撐在同一 SOC 上切分資源,可并發(fā)運(yùn)行多種操作系統(tǒng),保障互不干擾?;诎踩唾Y源隔離的需求需要Hypervisor。
資源隔離技術(shù)有很多,為什么是Hypervisor?
資源隔離技術(shù)有多種,從硬件底層逐層向上包括硬件隔離、虛擬化隔離、容器隔離、進(jìn)程隔離等。硬件隔離的隔離性最好,單隔離域的性能、安全可靠性最好,但靈活性、可配置性差,不能實(shí)現(xiàn)硬件共享,導(dǎo)致整個(gè)系統(tǒng)的資源利用率差,不能充分達(dá)到軟件定義汽車(chē)的目標(biāo)。容器隔離、進(jìn)程隔離可以更輕量級(jí)地實(shí)現(xiàn)業(yè)務(wù)隔離,但還是在同一個(gè)操作系統(tǒng)內(nèi),存在著資源干擾、相互安全攻擊的隱患,并且無(wú)法支持異構(gòu)操作系統(tǒng)業(yè)務(wù)域融合,影響傳統(tǒng)業(yè)務(wù)繼承,不利于生態(tài)發(fā)展。在眾多的資源隔離技術(shù)中,虛擬化是安全可靠、彈性靈活的優(yōu)選方案,是軟件定義汽車(chē)的重要支撐技術(shù)。
在汽車(chē)領(lǐng)域,Hypervisior 主要完成以下任務(wù):
虛擬化:為虛擬機(jī)提供 VCPU 資源和運(yùn)行環(huán)境;
內(nèi)存虛擬化:負(fù)責(zé)為其自身和虛擬機(jī)分配和管理硬件內(nèi)存資源;
中斷虛擬化:發(fā)生中斷和異常時(shí),按需將中斷和異常路由到虛擬機(jī)進(jìn)行處理;
虛擬機(jī)設(shè)備模擬:根據(jù)需求創(chuàng)建虛擬機(jī)可以訪問(wèn)的虛擬硬件組件;
硬件支持 BSP:提供 Hypervisor 在 SoC上運(yùn)行的板級(jí)支持包,如串口驅(qū)動(dòng);
虛擬機(jī)資源配置:對(duì)虛擬機(jī)的 CPU,內(nèi)存,IO 外設(shè)等資源進(jìn)行配置和管理;
虛擬機(jī)通信:為虛擬機(jī)提供 IPC,共享內(nèi)存等通信機(jī)制。
虛擬機(jī)調(diào)度:為虛擬機(jī)提供優(yōu)先級(jí)和時(shí)間片等調(diào)度算法;
虛擬機(jī)生命周期管理:創(chuàng)建,啟動(dòng)和停止虛擬機(jī);
虛擬機(jī)調(diào)測(cè)服務(wù):提供控制臺(tái),日志等調(diào)試功能;
3. QNX Hypervisor
QNX Hypervisor是基于Type 1實(shí)時(shí)優(yōu)先級(jí)的微內(nèi)核管理程序,用于管理虛擬機(jī)。在QNX 虛擬機(jī)管理程序可以更容易地獲得并通過(guò)從不同的客戶機(jī)操作系統(tǒng)的非安全關(guān)鍵組分分離安全關(guān)鍵部件保持安全認(rèn)證。QNX Hypervisor能夠滿足嵌入式零停機(jī)生產(chǎn)系統(tǒng)的精度要求。
基于標(biāo)準(zhǔn)的訪客通信(virtIO)和靈活的虛擬機(jī)配置確保了虛擬機(jī)管理程序環(huán)境可以擴(kuò)展到大型服務(wù)器級(jí)設(shè)計(jì)(根據(jù)自動(dòng)驅(qū)動(dòng)器和高端計(jì)算系統(tǒng)的要求)。此外,虛擬機(jī)管理程序環(huán)境可以擴(kuò)展到深度嵌入式系統(tǒng)(集群+信息娛樂(lè)汽車(chē)系統(tǒng),ECU整合,醫(yī)療設(shè)備,工業(yè)控制)。QNX Hypervisor實(shí)現(xiàn)為經(jīng)過(guò)業(yè)界驗(yàn)證的基于QNX Neutrino微內(nèi)核的RTOS的虛擬化擴(kuò)展; 繼承QNX操作系統(tǒng)的所有實(shí)時(shí)性和穩(wěn)定性,該操作系統(tǒng)已經(jīng)在全球數(shù)百萬(wàn)個(gè)嵌入式系統(tǒng)中提供。
Type 1 Hypervisor
安全認(rèn)證譜系
虛擬CPU模型
根據(jù)優(yōu)先級(jí)固定核心或共享核心
自適應(yīng)分區(qū) - 允許客戶運(yùn)行時(shí)的CPU保證
64位和32位客戶:QNX,Linux,Android,RTOS
共享內(nèi)存與觸發(fā)
VirtIO(0.95 / 1.0)設(shè)備共享
TAP和具有橋接功能的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)
故障檢測(cè)并重新啟動(dòng)客人
用于訪客完整性檢查的虛擬監(jiān)視器
低開(kāi)銷(xiāo)(典型<2%)
用于分析和調(diào)試的圖形工具
VM間通信
運(yùn)行在多個(gè)虛擬機(jī)中的應(yīng)用程序必須協(xié)同工作才能提供嵌入式設(shè)備的服務(wù)。通過(guò)這種方式,QNX Hypervisor支持共享內(nèi)存訪問(wèn),共享文件訪問(wèn)以及虛擬機(jī)之間的TCP / IP / UDP網(wǎng)絡(luò)。
QNX ()高級(jí)虛擬化框架 (QAVF) 擴(kuò)展了 QNX ()管理程序和 QNX ()安全管理程序,提供高級(jí)虛擬化軟件組件,使 Android ()、Linux ()和 QNX ()等來(lái)賓能夠在涉及安全性的復(fù)雜環(huán)境中共存,安全認(rèn)證、設(shè)備抽象和設(shè)備共享。
通過(guò)遵循 VIRTIO 等開(kāi)放標(biāo)準(zhǔn),未經(jīng)修改的 Android 和 Linux 客戶機(jī)可以共享底層硬件和高級(jí)軟件服務(wù),例如圖形顯示、聲學(xué)環(huán)境、觸摸屏、媒體存儲(chǔ)設(shè)備、視頻流、相機(jī)、通信、藍(lán)牙 (等)。
QAVF 允許在訪客外部共享設(shè)備。這是支持響應(yīng)式用戶體驗(yàn)的重要功能。例如,它使用戶能夠在來(lái)賓仍在啟動(dòng)時(shí)與硬件設(shè)備(如相機(jī)、顯示器、音頻或觸摸屏)進(jìn)行交互。
4. Hypervisor中的多OS通信技術(shù)
Hypervisor中有很多技術(shù),例如CPU 虛擬化和節(jié)能降耗技術(shù)、IO 設(shè)備虛擬化、實(shí)時(shí)性技術(shù)、安全和可靠性技術(shù)等,大家可以自己查資料去學(xué)習(xí),特別是參考國(guó)內(nèi)的minos,bao-hypervisor開(kāi)源軟件去學(xué)習(xí),修改,使用(大家懂的)。
這里主要介紹下多OS的通信技術(shù),后面在介紹多OS電源管理時(shí)會(huì)用到。
Hypervisor(虛擬化管理程序)是一種軟件或硬件層面的虛擬化技術(shù),用于在物理計(jì)算機(jī)上運(yùn)行多個(gè)虛擬操作系統(tǒng)(OS)。Hypervisor需要提供一種有效的機(jī)制,以便不同虛擬機(jī)(VM)之間以及虛擬機(jī)與宿主機(jī)(host)之間進(jìn)行通信。以下是幾種常見(jiàn)的Hypervisor的OS間通信機(jī)制:
1. 虛擬網(wǎng)絡(luò):Hypervisor可以創(chuàng)建虛擬網(wǎng)絡(luò),為虛擬機(jī)提供網(wǎng)絡(luò)連接和通信功能。虛擬網(wǎng)絡(luò)允許虛擬機(jī)之間進(jìn)行網(wǎng)絡(luò)通信,就像它們連接在同一物理網(wǎng)絡(luò)上一樣。這種通信機(jī)制基于網(wǎng)絡(luò)協(xié)議和虛擬網(wǎng)絡(luò)設(shè)備的實(shí)現(xiàn)。
2. 共享內(nèi)存:Hypervisor可以在物理內(nèi)存中創(chuàng)建共享區(qū)域,允許不同的虛擬機(jī)共享內(nèi)存數(shù)據(jù)。通過(guò)在共享內(nèi)存區(qū)域中讀取和寫(xiě)入數(shù)據(jù),虛擬機(jī)可以進(jìn)行相互通信。這種通信機(jī)制可以在虛擬機(jī)之間高效地傳遞數(shù)據(jù),但需要適當(dāng)?shù)耐胶突コ鈾C(jī)制來(lái)處理并發(fā)訪問(wèn)。
3. 虛擬設(shè)備和驅(qū)動(dòng)程序:Hypervisor可以為虛擬機(jī)提供虛擬設(shè)備和驅(qū)動(dòng)程序,使得虛擬機(jī)可以與宿主機(jī)和其他虛擬機(jī)進(jìn)行通信。通過(guò)虛擬設(shè)備接口和相關(guān)驅(qū)動(dòng)程序,虛擬機(jī)可以發(fā)送和接收數(shù)據(jù)包、訪問(wèn)存儲(chǔ)資源和執(zhí)行其他設(shè)備相關(guān)的操作。
4. 信號(hào)和事件:Hypervisor可以使用信號(hào)和事件機(jī)制來(lái)實(shí)現(xiàn)虛擬機(jī)之間的通信。例如,一個(gè)虛擬機(jī)可以向Hypervisor發(fā)送信號(hào),通知其他虛擬機(jī)發(fā)生了特定事件或狀態(tài)變化。這些信號(hào)可以在虛擬機(jī)之間進(jìn)行同步或觸發(fā)相應(yīng)的處理邏輯。
5. 宿主機(jī)通道:有些Hypervisor提供了特定的宿主機(jī)通道,允許虛擬機(jī)與宿主機(jī)之間進(jìn)行通信。這些通道可以用于傳遞命令、狀態(tài)信息、性能指標(biāo)等。通常,宿主機(jī)通道是通過(guò)特定的API或驅(qū)動(dòng)程序提供的。
其實(shí)就是:
要么共享內(nèi)存+中斷,
要么寄存在某個(gè)程序上(驅(qū)網(wǎng)絡(luò)動(dòng)、虛擬設(shè)備驅(qū)動(dòng))
要么Hypervisor加一套消息處理通道機(jī)制(事件、信號(hào)、通道)。
5. 電源管理相關(guān)
例如司機(jī)不開(kāi)車(chē)時(shí)對(duì)整車(chē)進(jìn)行關(guān)機(jī),那么這個(gè)命令如何在三個(gè)OS直接傳遞執(zhí)行,這里必須有一個(gè)次序,并且有一個(gè)代理人。比如司機(jī)(上帝)發(fā)送了一個(gè)指令給汽車(chē),汽車(chē)?yán)锩娴?strong>車(chē)控OS最先接收到指令(教皇),然后教皇下令給座艙OS(大主教),大主教繼續(xù)給智駕OS(主教)傳達(dá)命令,然后各自去完成指令。
教皇就是Host OS,其他的都是Guest OS。Host OS和Guest OS的通信就是上面3章說(shuō)的一種方法即可。例如采用中斷+共享內(nèi)存,那么兩個(gè)OS都需要注冊(cè)對(duì)應(yīng)的中斷處理函數(shù),映射好共享內(nèi)存,Guest OS一旦接受到中斷,讀取共享內(nèi)存中的命令后就去執(zhí)行。
不管是Host OS或者Guest OS執(zhí)行電源命令都是通過(guò)HVC命令陷入到Hypervisor去處理。
審核編輯:湯梓紅
-
電源管理
+關(guān)注
關(guān)注
115文章
6121瀏覽量
143948 -
cpu
+關(guān)注
關(guān)注
68文章
10769瀏覽量
210420 -
管理器
+關(guān)注
關(guān)注
0文章
239瀏覽量
18459 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
897瀏覽量
27960
原文標(biāo)題:參考:
文章出處:【微信號(hào):OS與AUTOSAR研究,微信公眾號(hào):OS與AUTOSAR研究】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論