共计 1957 个字符,预计需要花费 5 分钟才能阅读完成。
「Rust-Shyper 是北京航空航天大学计算机学院王雷传授团队设计开发的虚拟机监控器,该零碎基于 Rust 语言,实现了一个高牢靠、嵌入式 Hypervisor。2023 年 2 月 15 日 Rust-Shyper 正式在 openEuler 社区开源。」
我的项目地址:https://gitee.com/openeuler/rust_shyper
Rust-Shyper 是一款基于 AArch64 架构、「Rust 编写」、面向无人车、机器人等嵌入式场景的 「Type-1 型」 虚拟机监控器(Hypervisor)。其设计指标是在进步资源利用率的同时,保障虚拟机实时性、隔离性与内存平安。此外,Rust-Shyper 反对「虚拟机迁徙」(VM migration)和「监控器动静降级」(Hypervisor Live-update)两种热更新机制,可能在不影响虚拟机运行的状况下,动静修复 Hypervisor 的软件破绽。目前该零碎能够在 NVIDIA Jetson TX2、Raspberry Pi 4 和 QEMU 平台上运行,反对实时和非实时虚拟机,可运行 Linux 和 RTOS。
往年的 「openEuler Developer Day 2023 嵌入式分论坛」 进行了 Rust-Shyper 我的项目“基于 Rust 的嵌入式虚拟机监视器及热更新技术”的主题演讲,可通过以下链接观看视频回放(21 日嵌入式分论坛,议题从 00:49:38 开始):
https://www.openeuler.org/zh/interaction/summit-list/devday2023/
嵌入式虚拟化的挑战
物联网的一直倒退使得古代嵌入式零碎正在朝着通用零碎和混合要害零碎的方向演变,其承载的工作往往有着不同的可靠性、实时性和验证级别,如何保障不同关键性工作之间的互相隔离以及实时性成为了一个难题。虚拟化技术提供的资源隔离伎俩成为了解决上述问题的要害,但嵌入式虚拟化也面临一些挑战:
- 如何保障虚拟机之间的「隔离性和安全性」,避免歹意攻打;
- 如何保障虚拟机之间的通信效率和「实时性」,防止提早或者抖动;
- 如何保障 「Hypervisor 自身的稳定性和可靠性」,防止出现故障。
Rust-Shyper 的设计理念和特点
- 「内存平安」:利用 Rust 语言类型零碎和内存平安模型,保障 Hypervisor 的内存平安;
- 「强隔离性」:利用硬件辅助虚拟化,实现虚拟机间的平安隔离和故障隔离;
- 「丰盛的设施模型」:为进步资源利用率,实现了直通设施、中介传递和全模仿等多种设施模型;
- 「实时虚拟化」:针对性能需求,实现资源直通以及实时虚拟化技术;
- 「虚拟机监控器热更新技术」:实现了虚拟机迁徙和监控器动静降级两类视器热更新机制。
Rust-Shyper 零碎架构和性能
Rust-Shyper 是一款基于 AArch64 体系结构的 Type-1 虚拟机监控器,整个构造蕴含三个层级:
- 最底层为硬件层级,对应 ARMv8 EL3 固件层级;
- 中间层为虚拟机监控器层,对应 ARMv8 EL2 虚拟化层级,该层级也是 Rust-Shyper 代码所处的特权层级;
- 最上层为虚拟机层级,对应 ARMv8 EL1 和 EL0 层级。
为了合乎嵌入式应用的需要,Rust-Shyper 通过提供不同的虚拟机类型,来提供差异化的虚拟化服务,Rust-Shyper 中反对治理虚拟机(MVM)、客户虚拟机(GVM)、实时虚拟机(RTVM)等三类虚拟机。
Rust-Shyper 的「虚拟机监控器热更新技术」
为了晋升嵌入式场景下 Hypervisor 的可靠性,Rust-Shyper 引入了跨硬件的虚拟机迁徙技术和本地热更新技术。
虚拟机迁徙
虚拟机迁徙技术的整个流程如上图所示。Rust-Shyper 实现了基于 Pre-Copy 策略的虚拟机在硬件平台之间的迁徙,可用于负载平衡和谬误预防。
监控器动静降级
Rust-Shyper 设计实现了「监控器动静降级技术」,其最大提早抖动低于 Jailhouse,显著升高热更新老本,满足虚拟机的实时性需要,可用于软件版本升级和谬误修复。
利用场景与将来的布局
- 基于 Rust-Shyper 移植 NVIDIA Jetson TX2 硬件平台的无人车利用(预计 2023 年 5 月实现);
- 基于 Rust-Shyper 反对 ROS 零碎,移植机器人利用;
- 针对 Virtio 等虚拟化设施模型的优化钻研;
- 针对 RISC-V 平台的 Rust-Shyper 移植。
对于咱们
北航王雷老师的团队承当了国家自然科学基金我的项目、863 课题和核高基等多项科研项目。在虚拟化方面,针对混合要害畛域高牢靠、强实时的要求,基于时空分区的隔离机制,开发了 C 语言的 Shyper 虚拟机监控器,该监控器曾经通过了 EAL5+ 认证。在操作系统内核方面,基于简单网络理论,针对 Linux 内核提出了基于年龄的演变模型,正当地解释了操作系统网络特色的造成机理。