物联网的不断发展使得现代嵌入式系统正在朝着通用系统和混合关键系统的方向演化,其承载的任务往往有着不同的可靠性、实时性和验证级别的需要,而如何保证不同关键性任务之间的相互隔离以及实时性成为了一个难题。虚拟化技术提供的资源隔离手段成为了解决上述问题的关键。本次分享将首先介绍嵌入式虚拟化的特点和挑战,然后分享Rust-Shyper的设计理念以及特点,最后介绍Rust-Shyper是的架构、功能和未来工作。
虚拟化技术是一种能够在一台物理机上运行多个虚拟机的技术,它可以提高资源利用率、降低成本、增强安全性和灵活性等。虚拟化技术主要分为两种类型:Type-1型和Type-2型。Type-1型虚拟化技术是指直接运行在硬件上的虚拟机监视器(Hypervisor),它可以管理和调度多个虚拟机,提供高效的性能和隔离性。Type-2型是指运行在操作系统(Host OS)上的虚拟机监视器,它可以利用操作系统提供的服务和接口,实现更多的功能和兼容性。
嵌入式系统是一种专用于特定领域或者应用场景的计算设备,它通常具有资源受限、实时性要求高、可靠性要求高等特点。嵌入式系统中使用虚拟化技术可以带来很多好处,比如说:
然而,在嵌入式场景中使用虚拟化技术也面临着很多挑战,比如说:
为了解决这些问题,我们使用Rust语言开发了一个名为Rust-Shyper的Type-1型嵌入式Hypervisor。Rust-Shyper是一个使用高级语言Rust编写的面向嵌入式场景的Type-1型Hypervisor。其设计目标在于提高资源利用率的同时,同时保障虚拟机实时性、隔离性与可靠性的需求。
当前主流的虚拟化产品普遍采用C语言编写。虽然C语言具有灵活的访存机制和性能优势,但是,C语言灵活自由的指针功能总会为系统引入诸多内存安全问题,其安全性常为人诟病。所以,我们把目光投向了以安全性著称的Rust高级语言。Rust语言具有如下优势:
Rust-Shyper面向嵌入式场景,在设计之初便着重考虑嵌入式场景的独特需求了。它具有如下特点:

Rust-Shyper是一款基于AArch64体系结构的Type-1虚拟机监视器。整个结构包含三个层级:
依照ARMv8特权级设计,运行在EL2的Rust-Shyper有能力访问并控制EL1、EL0的寄存器状态,也能够通过配置相应的控制寄存器,实现对虚拟机特权指令(HVC、SMC)、中断、异常等事件的拦截处理。Rust-Shyper能够支持Linux、裸机应用等多种系统软件作为虚拟机。
Rust-Shyper的主要功能模块包括中断控制、异常处理、上下文切换、通用时钟、核心调度、电源管理、内存管理、模拟设备、中断控制器直通、Rust异步任务、虚拟机迁移与动态升级。为了符合嵌入式应用的需求,Rust-Shyper通过提供不同的虚拟机类型,来提供差异化的虚拟机服务,Rust-Shyper中将虚拟机划分为三类,即管理虚拟机(MVM)、客户虚拟机(GVM)、实时虚拟机(RTVM),每类虚拟机的功能介绍如下:
目前,rust-shyper支持在QEMU模拟器和多种硬件平台上运行,包括经过验证的平台包括:
我们在开源仓库中提供了虚拟机的rootfs镜像和配套的内核模块、用户态CLI等工具的二进制或源代码文件,欢迎使用反馈。
Rust-Shyper项目仍在持续演化更新中。我们期待在未来从以下几个方面,为了提高Rust-Shyper的易用性和产品能力:
欢迎有兴趣、志同道合的朋友加入我们,共同把Rust-Shyper打造成更优秀地虚拟化底层软件。欢迎在上述开源平台的讨论区与我们互动,或者通过邮件moce0627@outlook.com联系我们。
Keyang Hu, Wang Huang, Lei Wang, Ce Mo, Runxiang Wang, Yu Chen, Ju Ren, Bo Jiang. Unishyper: A Rust-based unikernel enhancing reliability and efficiency of embedded systems[J]. Journal of Systems Architecture, 2024, 153: 103199
Ce Mo, Lei Wang, Siran Li, Keyang Hu, Bo Jiang. Rust-Shyper: A reliable embedded hypervisor supporting VM migration and hypervisor live-update[J]. Journal of Systems Architecture, 2023, 142: 102948
Siran Li, Lei Wang, Keyang Hu, Ce Mo, Bo Jiang. VM Migration and Live-Update for Reliable Embedded Hypervisor[C]. Dependable Software Engineering. Theories, Tools, and Applications: 8th International Symposium, SETTA 2022, Beijing, China, October 27-29, 2022, Proceedings. Cham: Springer Nature Switzerland, 2022: 53-69.
Yicong Shen, Lei Wang, Yuanzhi Liang, Siran Li, Bo Jiang. Shyper: An embedded hypervisor applying hierarchical resource isolation strategies for mixed-criticality systems[C]. 2022 Design, Automation & Test in Europe Conference & Exhibition (DATE). IEEE, 2022: 1287-1292.
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。