Rust-Shyper:基于 Rust 语言的高可靠、开源嵌入式 Hypervisor

news/2024/7/10 21:15:33 标签: rust, 开源, linux, 操作系统, 嵌入式硬件

「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 的设计理念和特点

  1. 「内存安全」:利用 Rust 语言类型系统和内存安全模型,保证 Hypervisor 的内存安全;
  2. 「强隔离性」:利用硬件辅助虚拟化,实现虚拟机间的安全隔离和故障隔离;
  3. 「丰富的设备模型」:为提高资源利用率,实现了直通设备、中介传递和全模拟等多种设备模型;
  4. 「实时虚拟化」:针对性能需求 ,实现资源直通以及实时虚拟化技术;
  5. 「虚拟机监控器热更新技术」:实现了虚拟机迁移和监控器动态升级两类视器热更新机制。

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 内核提出了基于年龄的演化模型,合理地解释了操作系统网络特征的形成机理。


http://www.niftyadmin.cn/n/267508.html

相关文章

你是否线上有使用ThreadLocal,如果结合多线程,请慎用

随着业务的增加,数据量的增加,多线程的使用会越来越频繁,提升单机的处理能力。 前些日子我们线上出现了一个比较严重的故障,这个故障是多线程使用不当引起的,挺有代表性的,所以分享给大家,希望…

RAID磁盘阵列详情

RAID磁盘阵列详情,RAID分类及优缺点 文章目录 RAID磁盘阵列详情,RAID分类及优缺点一、RAID概述二、RAID级别三、标准RAID1. RAID 0 (称为带区卷,性能最佳)2. RAID 1 (称为镜像卷,完整备份&#…

制冷暖通工业互联网平台建设

制冷暖通工业互联网平台建设需要遵循一定的流程,具体步骤如下: 需求分析:了解客户需求,包括业务流程、系统功能、界面设计等方面。 系统设计:基于需求分析,进行系统设计,包括系统结构、数据库设…

第六届中国软件开源创新大赛——飞桨赛题新鲜出炉,速来pick!

最近想要充个电🔋 飞桨邀你开启开源贡献之旅 寻找那个最“会”的你 顶级开源项目、资深研发指导、高阶开发者合作交流,‍‍ Buff 叠满! 技能提升、丰富简历、高额奖金, 你还不心动? 赛事简介 中国软件开源创新大赛已成…

[NOIP2010 提高组] 乌龟棋

题意:给你一个一维棋盘,棋盘上有对应的分数,然后给你若干张牌,每张牌的数字代表它可以使小乌龟移动的距离(1,2,3,4)给定的牌必须全部消耗完且最后一定可以到达终点&#…

功率放大器在MTT检测超声医疗中的应用

实验名称:MTT检测超声激活血卟啉对SW-480细胞的杀伤作用 研究方向:超声医疗 测试目的: 自提出激光与血卟啉结合具有明显的抗肿瘤效应,PDT法在诊治肿瘤方面已做了大量研究并在临床中得到应用。但由于激光对组织穿透力较差&#xff…

数学建模——查数据

如果选择C题的小伙伴常常需要查找一些数据,那么这些数据一般都可以从哪里找到呢? 常用的查数据平台 优先在知网、谷歌学术等平台搜索国家统计局 最全面,月度季度年度,各地区各部门各行业,包罗万象 https://data.stat…

ChannelSftp 使用教程

ChannelSftp 是 JSch 库中的一个类,它提供了一个连接和操作 SFTP 服务器的通道。以下是使用 ChannelSftp 的一些常见操作: #### 1. 连接 SFTP 服务器 以下是连接 SFTP 服务器的示例代码: JSch jsch new JSch(); Session session jsch.get…