目前的位置: 首页 ZVM开源项目 正文

openEuler开源新项目——嵌入式实时虚拟机ZVM介绍


嵌入式实时虚拟机ZVM(Zephyr-based Virtual Machine)是由湖南大学嵌入式与网络计算湖南省重点实验室(以下简称“湖大嵌入式实验室”)主任谢国琪教授主导设计并开发的虚拟化软件。该软件基于实时操作系统(RTOS)Zephyr开发,可同时启动Linux与Zephyr 2个Guest OS,从而在同一硬件平台上实现混合内核部署。

2023年2月,湖大嵌入式实验室正式将该项目开源至openEuler社区。

 

 

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. 开源地址

项目地址:https://gitee.com/openeuler/zvm

 

 

5. ZVM核心维护者

谢国琪,湖南大学教授、博士生导师,从事嵌入式计算基础理论、平台技术与应用系统研究,现任信息科学与工程学院院长助理、嵌入式与网络计算湖南省重点实验室主任、中国计算机学会(CCF)嵌入式系统专委秘书长、国家级青年人才计划获得者、湖南省杰出青年基金获得者,担任JSA、JCSC及MICPRO 3本嵌入式领域SCI期刊编委,获湖南省计算机学会科技二等奖(排名第1)、openEuler优秀开源项目奖(排名第1)、IEEE可扩展计算早期职业奖、中国嵌入式技术大会贡献奖。在RTSS、DAC、TCAD、TPDS、TDSC、TSC、TIE、TITS等会议与期刊发表论文30余篇,其中ESI高被引论文4篇,出版专著2本。主持国家基金项目4项,华为、腾讯、百度、支付宝、飞腾、中国汽研、南昌汽研、联合汽车电子、湘江智车、中国船舶、中国航天等企业项目10余项,主持完成了嵌入式实时虚拟机管理平台、离散型车载CAN-TSN实时通信平台、汽车软件可视化辅助开发系统、汽车软件架构自动化开发系统、车端V2X场景验证系统多款嵌入式平台与系统,并应用于合作企业的工业实践

熊程来,湖南大学信息科学与工程学院,计算机科学与技术专业博士研究生,openEuler社区ZVM开源项目核心开发人员,openEuler SIG-Maintainer。主要研究方向为嵌入式系统和系统虚拟化技术。

王中甲,湖南大学信息科学与工程学院硕士研究生,师从谢国琪教授。研究方向为嵌入式实时通信,研究嵌入式场景中的实时通信及调度问题,保证通信的实时性和确定性。

胡星宇,湖南大学信息科学与工程学院硕士研究生在读,openEuler社区 ZVM 核心维护者,参与过众多操作系统方向的项目开发。主要研究方向为操作系统虚拟化、操作系统安全,熟悉嵌入式场景下的虚拟设备框架。

胡宇昊,湖南大学信息科学与工程学院硕士研究生在读,openEuler社区zvm维护者,主要研究方向为嵌入式虚拟化。

温浩,云南大学软件学院硕士研究生在读,openEuler社区 ZVM 核心维护者。主要研究方向为操作系统虚拟化、虚拟化系统内生安全。

王渊:云南大学软件学院硕士研究生在读。openEuler社区 ZVM 核心维护者。主要研究方向为操作系统虚拟化、虚拟化系统内生安全。

宋君帆,湖南大学信息科学与工程学院本科生在读,openEuler社区 ZVM 核心维护者,参与过多个开源项目的开发与贡献。主要研究方向为嵌入式虚拟化,熟悉 Zephyr RTOS 内核的多个模块,并基于此研究和探索嵌入式虚拟化的应用。

 

 

关闭

嵌入式与网络计算湖南省重点实验室
版权所有 © 2023 湖南大学