1. 背景介紹
嵌入式實時虛擬化技術是一種允許在單個硬件平臺上同時運行多個操作系統、并保持確定性和時間關鍵性能的技術,該技術可為嵌入式系統開發帶來許多好處,例如硬件整合、系統隔離、系統靈活可靠性、安全性和可擴展性等。嵌入式實時虛擬化可支持智能汽車、數控機床及5G設備等高級應用。
開發嵌入式實時虛擬化軟件面臨著一些挑戰。第一個挑戰是如何確保不同Guest OS間的隔離和安全性,尤其是當它們具有不同級別的關鍵性和可信度時。第二個挑戰是如何在不同Guest OS間有效地共享或分配 I/O 設備,這可能需要設備模擬或直通機制。第三個挑戰是如何確保作為Guest OS運行的RTOS具備低延遲和高吞吐量。
嵌入式實時虛擬化軟件需要通過提供強制的隔離和安全、高效的中斷處理、靈活的 I/O 設備管理機制及硬件支持來應對這些挑戰。基于架構硬件虛擬化支持與虛擬化主機拓展支持,湖大嵌入式實驗室開發了基于Zephyr RTOS的虛擬化軟件ZVM,實現了Guest OS間的隔離、設備分配及中斷處理,保證了系統的安全與實時。
2. 技術路線
ZVM總體功能需要關注三個部分:安全隔離、設備管理和系統性能提升。
(1)安全隔離:利用虛擬化技術實現不同特權級的應用支持,確保不同Guest OS間的隔離和安全,尤其是當它們具有不同級別的關鍵級時。為每個Guest OS分配不同的虛擬地址空間和虛擬設備,實現虛擬機間的隔離以保證系統安全。
(2)設備管理:使用支持設備模擬和直通機制的管理程序,在不同Guest OS之間有效共享或分配I/O設備。對于中斷控制器需獨占的設備,用完全虛擬化的方式進行分配,對于UART等非獨占的設備,使用設備直通的方式進行分配。
(3)系統性能提升:在處理器方面,使用支持ARM64硬件輔助虛擬化拓展技術來減少上下文開銷;在內存管理方面,使用基于硬件的兩階段地址轉換地址轉換性能開銷;在中斷方面,使用基于硬件的中斷注入機制來減少上下文開銷和中斷時延。
3. 系統架構
ZVM整體系統架構如下圖所示,通過在Zephyr RTOS中加入虛擬化模塊,實現CPU虛擬化、內存虛擬化、中斷虛擬化、定時器虛擬化和I/O虛擬化。ZVM支持兩種類型的Guest OS,即通用的Linux操作系統和Zephyr RTOS。
(1)CPU虛擬化。CPU虛擬化模塊的主要功能是為每個Guest OS的vCPU虛擬出一個單獨的隔離上下文。每個vCPU均作為一個線程存在,由ZVM統一調度。為了提高vCPU的性能,ARM64架構為ZVM提供了VHE支持,VHE可以使Host OS遷移到EL2特權模式,而無需改變操作系統原有代碼。VHE主要實現了ARM寄存器重定向,可以在不修改Zephyr RTOS內核代碼的情況下,將其遷移EL2層開發ZVM,既降低了系統冗余,又提高了系統性能。
(2)內存虛擬化。內存虛擬化模塊的主要作用是實現Guest OS間內存地址的隔離。系統需要隔離不同Guest OS的內存空間,監控Guest OS對實際物理內存的訪問,以保護物理內存。為了實現該功能,ARM64提供了兩階段的地址查找策略。第一階段是從Guest OS的虛擬地址到Guest OS的物理地址轉換,第二階段是從Guest OS的物理地址到Host OS的物理地址轉化。ARM專門為第二階段轉換提供單獨的硬件,以提高地址翻譯性能。
(3)中斷虛擬化模塊。中斷虛擬化使用ARM的通用中斷控制器(GIC)設備,并基于該設備實現虛擬中斷配置。Guest OS的中斷統一路由到ZVM,然后ZVM會將它們分配給不同的vCPU。虛擬中斷的注入通過GIC中的Virtual CPU接口或List Register具體實現。
(4)定時器虛擬化。定時器虛擬化為每個CPU定義了一組虛擬定時器寄存器,它們在預定時間后單獨計數并拋出中斷,由Host OS轉發給Guest OS。同時,在Guest OS切換過程中,虛擬定時器會計算Guest OS的實際運行時間,并對Guest OS退出的時間進行補償,為Guest OS提供定時器服務。
(5)設備虛擬化。在設備虛擬化方面,ZVM采用ARM中的Memory-Mapped I/O (MMIO)方法將設備地址映射到虛擬內存地址,構建虛擬設備空間,實現Guest OS對設備地址的訪問。在具體實現上,ZVM統一構建一個虛擬的MMIO設備,在Guest OS創建過程中將該設備分配給指定的Guest OS,實現I/O虛擬化。此外,對一些非獨占設備,ZVM使用設備直通的方式實現設備的訪問。
4. 未來規劃
ZVM由Sig-Zephyr進行維護,并計劃在2023年5月推出第一個支持Zephyr最新LTS的基礎版本,7月實現openEuler Embedded和ZVM整合,并將完善各項其它高級功能,如IO設備框架支持、虛擬機動態資源管理及實時性支持等。
審核編輯:劉清
-
嵌入式
+關注
關注
5092文章
19178瀏覽量
307696 -
寄存器
+關注
關注
31文章
5363瀏覽量
121177 -
定時器
+關注
關注
23文章
3255瀏覽量
115376 -
虛擬機
+關注
關注
1文章
940瀏覽量
28427
原文標題:openEuler開源新項目,嵌入式實時虛擬機ZVM介紹
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
gnuboy虛擬機怎么應用到嵌入式環境中?
介紹VirtualBox虛擬機的構建方法
如何創建虛擬機?
虛擬機通過USB網卡與嵌入式Linux開發板直連需求
介紹SSH軟件的安裝和ssh軟件在主機和虛擬機之間傳文件
基于嵌入式平臺的并發虛擬機研究
虛擬機的嵌入式開發
基于gnuboy虛擬機的嵌入式實驗平臺的移植與優化
![基于gnuboy<b class='flag-5'>虛擬機</b>的<b class='flag-5'>嵌入式</b>實驗平臺的移植與優化](https://file1.elecfans.com//web2/M00/A5/D9/wKgZomUMOmyAL5KSAAAXL25Wouk165.jpg)
字符型嵌入式軟PLC虛擬機設計
![字符型<b class='flag-5'>嵌入式</b>軟PLC<b class='flag-5'>虛擬機</b>設計](https://file.elecfans.com/web2/M00/48/E2/pYYBAGKhtCqAHxLoAAATdV2oHzk527.jpg)
嵌入式系統開發筆記1:構建VirualBox虛擬機開發環境
![<b class='flag-5'>嵌入式</b>系統開發筆記1:構建VirualBox<b class='flag-5'>虛擬機</b>開發環境](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
嵌入式系統設計(九):虛擬機安裝常見錯誤匯總,保你順利安裝
![<b class='flag-5'>嵌入式</b>系統設計(九):<b class='flag-5'>虛擬機</b>安裝常見錯誤匯總,保你順利安裝](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
嵌入式系統設計(二): 虛擬機和主機之間共享文件夾
![<b class='flag-5'>嵌入式</b>系統設計(二): <b class='flag-5'>虛擬機</b>和主機之間共享文件夾](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論