1. 背景介紹
嵌入式實(shí)時虛擬化技術(shù)是一種允許在單個硬件平臺上同時運(yùn)行多個操作系統(tǒng)、并保持確定性和時間關(guān)鍵性能的技術(shù),該技術(shù)可為嵌入式系統(tǒng)開發(fā)帶來許多好處,例如硬件整合、系統(tǒng)隔離、系統(tǒng)靈活可靠性、安全性和可擴(kuò)展性等。嵌入式實(shí)時虛擬化可支持智能汽車、數(shù)控機(jī)床及5G設(shè)備等高級應(yīng)用。
開發(fā)嵌入式實(shí)時虛擬化軟件面臨著一些挑戰(zhàn)。第一個挑戰(zhàn)是如何確保不同Guest OS間的隔離和安全性,尤其是當(dāng)它們具有不同級別的關(guān)鍵性和可信度時。第二個挑戰(zhàn)是如何在不同Guest OS間有效地共享或分配 I/O 設(shè)備,這可能需要設(shè)備模擬或直通機(jī)制。第三個挑戰(zhàn)是如何確保作為Guest OS運(yùn)行的RTOS具備低延遲和高吞吐量。
嵌入式實(shí)時虛擬化軟件需要通過提供強(qiáng)制的隔離和安全、高效的中斷處理、靈活的 I/O 設(shè)備管理機(jī)制及硬件支持來應(yīng)對這些挑戰(zhàn)。基于架構(gòu)硬件虛擬化支持與虛擬化主機(jī)拓展支持,湖大嵌入式實(shí)驗(yàn)室開發(fā)了基于Zephyr RTOS的虛擬化軟件ZVM,實(shí)現(xiàn)了Guest OS間的隔離、設(shè)備分配及中斷處理,保證了系統(tǒng)的安全與實(shí)時。
2. 技術(shù)路線
ZVM總體功能需要關(guān)注三個部分:安全隔離、設(shè)備管理和系統(tǒng)性能提升。
(1)安全隔離:利用虛擬化技術(shù)實(shí)現(xiàn)不同特權(quán)級的應(yīng)用支持,確保不同Guest OS間的隔離和安全,尤其是當(dāng)它們具有不同級別的關(guān)鍵級時。為每個Guest OS分配不同的虛擬地址空間和虛擬設(shè)備,實(shí)現(xiàn)虛擬機(jī)間的隔離以保證系統(tǒng)安全。
(2)設(shè)備管理:使用支持設(shè)備模擬和直通機(jī)制的管理程序,在不同Guest OS之間有效共享或分配I/O設(shè)備。對于中斷控制器需獨(dú)占的設(shè)備,用完全虛擬化的方式進(jìn)行分配,對于UART等非獨(dú)占的設(shè)備,使用設(shè)備直通的方式進(jìn)行分配。
(3)系統(tǒng)性能提升:在處理器方面,使用支持ARM64硬件輔助虛擬化拓展技術(shù)來減少上下文開銷;在內(nèi)存管理方面,使用基于硬件的兩階段地址轉(zhuǎn)換地址轉(zhuǎn)換性能開銷;在中斷方面,使用基于硬件的中斷注入機(jī)制來減少上下文開銷和中斷時延。
3. 系統(tǒng)架構(gòu)
ZVM整體系統(tǒng)架構(gòu)如下圖所示,通過在Zephyr RTOS中加入虛擬化模塊,實(shí)現(xiàn)CPU虛擬化、內(nèi)存虛擬化、中斷虛擬化、定時器虛擬化和I/O虛擬化。ZVM支持兩種類型的Guest OS,即通用的Linux操作系統(tǒng)和Zephyr RTOS。
(1)CPU虛擬化。CPU虛擬化模塊的主要功能是為每個Guest OS的vCPU虛擬出一個單獨(dú)的隔離上下文。每個vCPU均作為一個線程存在,由ZVM統(tǒng)一調(diào)度。為了提高vCPU的性能,ARM64架構(gòu)為ZVM提供了VHE支持,VHE可以使Host OS遷移到EL2特權(quán)模式,而無需改變操作系統(tǒng)原有代碼。VHE主要實(shí)現(xiàn)了ARM寄存器重定向,可以在不修改Zephyr RTOS內(nèi)核代碼的情況下,將其遷移EL2層開發(fā)ZVM,既降低了系統(tǒng)冗余,又提高了系統(tǒng)性能。
(2)內(nèi)存虛擬化。內(nèi)存虛擬化模塊的主要作用是實(shí)現(xiàn)Guest OS間內(nèi)存地址的隔離。系統(tǒng)需要隔離不同Guest OS的內(nèi)存空間,監(jiān)控Guest OS對實(shí)際物理內(nèi)存的訪問,以保護(hù)物理內(nèi)存。為了實(shí)現(xiàn)該功能,ARM64提供了兩階段的地址查找策略。第一階段是從Guest OS的虛擬地址到Guest OS的物理地址轉(zhuǎn)換,第二階段是從Guest OS的物理地址到Host OS的物理地址轉(zhuǎn)化。ARM專門為第二階段轉(zhuǎn)換提供單獨(dú)的硬件,以提高地址翻譯性能。
(3)中斷虛擬化模塊。中斷虛擬化使用ARM的通用中斷控制器(GIC)設(shè)備,并基于該設(shè)備實(shí)現(xiàn)虛擬中斷配置。Guest OS的中斷統(tǒng)一路由到ZVM,然后ZVM會將它們分配給不同的vCPU。虛擬中斷的注入通過GIC中的Virtual CPU接口或List Register具體實(shí)現(xiàn)。
(4)定時器虛擬化。定時器虛擬化為每個CPU定義了一組虛擬定時器寄存器,它們在預(yù)定時間后單獨(dú)計(jì)數(shù)并拋出中斷,由Host OS轉(zhuǎn)發(fā)給Guest OS。同時,在Guest OS切換過程中,虛擬定時器會計(jì)算Guest OS的實(shí)際運(yùn)行時間,并對Guest OS退出的時間進(jìn)行補(bǔ)償,為Guest OS提供定時器服務(wù)。
(5)設(shè)備虛擬化。在設(shè)備虛擬化方面,ZVM采用ARM中的Memory-Mapped I/O (MMIO)方法將設(shè)備地址映射到虛擬內(nèi)存地址,構(gòu)建虛擬設(shè)備空間,實(shí)現(xiàn)Guest OS對設(shè)備地址的訪問。在具體實(shí)現(xiàn)上,ZVM統(tǒng)一構(gòu)建一個虛擬的MMIO設(shè)備,在Guest OS創(chuàng)建過程中將該設(shè)備分配給指定的Guest OS,實(shí)現(xiàn)I/O虛擬化。此外,對一些非獨(dú)占設(shè)備,ZVM使用設(shè)備直通的方式實(shí)現(xiàn)設(shè)備的訪問。
4. 未來規(guī)劃
ZVM由Sig-Zephyr進(jìn)行維護(hù),并計(jì)劃在2023年5月推出第一個支持Zephyr最新LTS的基礎(chǔ)版本,7月實(shí)現(xiàn)openEuler Embedded和ZVM整合,并將完善各項(xiàng)其它高級功能,如IO設(shè)備框架支持、虛擬機(jī)動態(tài)資源管理及實(shí)時性支持等。
審核編輯:劉清
-
嵌入式
+關(guān)注
關(guān)注
5090文章
19176瀏覽量
306915 -
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
120949 -
定時器
+關(guān)注
關(guān)注
23文章
3255瀏覽量
115181 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
931瀏覽量
28360
原文標(biāo)題:openEuler開源新項(xiàng)目,嵌入式實(shí)時虛擬機(jī)ZVM介紹
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論