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. 未来规划
ZVM 由 Sig-Zephyr 进行维护,并计划在 2023 年 5 月推出第一个支持 Zephyr 最新 LTS 的基础版本,7 月实现 openEuler Embedded 和 ZVM 整合,并将完善各项其它高级功能,如 IO 设备框架支持、虚拟机动态资源管理及实时性支持等。
项目地址:
https://gitee.com/openeuler/zvm
关于团队
湖南大学嵌入式与网络计算湖南省重点实验室(以下简称“实验室”)长期从事嵌入式计算与系统方面的研究,现任实验室主任为谢国琪教授,首席科学家为常万里教授。实验室秉承“人本、智慧、速度、计算”之建室宗旨,倡导敬业与奉献之精神,努力营造学术自由之氛围,努力使本室成为有一定影响和学术地位的、凝聚和培养优秀人才的研究实验室,实现“培养人才、创新知识、交流学术、服务社会”的工作目标。
结合产学研合作项目,实验室拥有嵌入式实时虚拟化软件、车载网络综合验证平台、汽车软件工具链等系列产品,并聚焦世界前沿与顶尖科研成果发表,按照 csrankings.org 统计,实验室近 5 年(2018~2022)在嵌入式与实时系统领域国际顶级学术会议论文发表数世界排名第 17、国内排名第 1。实验室凝聚了多名在国内有较大影响、国际上有一定影响的学术带头人和一批年轻有活力的学术和技术骨干,实验室首席科学家常万里教授现任国际计算机学会(ACM)嵌入式系统专业委员会(SIGBED)秘书长。实验室现有固定研究人员 36 人,均具有博士学位,其中教授 16 人,国家级人才计划获得者 1 人,国家级青年人才计划获得者 3 人。
评论