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