0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

openEuler 来源:openEuler 2023-05-24 16:31 次阅读

「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 平台上运行,支持实时和非实时虚拟机,可运行 LinuxRTOS

嵌入式虚拟化的挑战

物联网的不断发展使得现代嵌入式系统正在朝着通用系统和混合关键系统的方向演化,其承载的任务往往有着不同的可靠性、实时性和验证级别,如何保证不同关键性任务之间的相互隔离以及实时性成为了一个难题。虚拟化技术提供的资源隔离手段成为了解决上述问题的关键,但嵌入式虚拟化也面临一些挑战:

如何保证虚拟机之间的「隔离性和安全性」,防止恶意攻击;

如何保证虚拟机之间的通信效率和「实时性」,避免延迟或者抖动;

如何保证「Hypervisor 本身的稳定性和可靠性」,防止出现故障。

Rust-Shyper 的设计理念和特点

「内存安全」:利用 Rust 语言类型系统和内存安全模型,保证 Hypervisor 的内存安全;

「强隔离性」:利用硬件辅助虚拟化,实现虚拟机间的安全隔离和故障隔离;

「丰富的设备模型」:为提高资源利用率,实现了直通设备、中介传递和全模拟等多种设备模型;

「实时虚拟化」:针对性能需求 ,实现资源直通以及实时虚拟化技术;

「虚拟机监控器热更新技术」:实现了虚拟机迁移和监控器动态升级两类视器热更新机制。

Rust-Shyper 系统架构和功能

4d6bc15a-e632-11ed-ab56-dac502259ad0.png

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 引入了跨硬件的虚拟机迁移技术和本地热更新技术。

虚拟机迁移

4d7f9fae-e632-11ed-ab56-dac502259ad0.png

虚拟机迁移技术的整个流程如上图所示。Rust-Shyper 实现了基于 Pre-Copy 策略的虚拟机在硬件平台之间的迁移,可用于负载平衡和错误预防。

监控器动态升级

Rust-Shyper 设计实现了「监控器动态升级技术」,其最大延迟抖动低于 Jailhouse,显著降低热更新成本,满足虚拟机的实时性需求,可用于软件版本升级和错误修复。

4d90885a-e632-11ed-ab56-dac502259ad0.png

应用场景与未来的规划

基于 Rust-Shyper 移植 NVIDIA Jetson TX2 硬件平台的无人车应用(预计 2023 年 5 月完成);

基于 Rust-Shyper 支持 ROS 系统,移植机器人应用;

针对 Virtio 等虚拟化设备模型的优化研究;

针对 RISC-V 平台的 Rust-Shyper 移植。

关于我们

北航王雷老师的团队承担了国家自然科学基金项目、863 课题和核高基等多项科研项目。在虚拟化方面,针对混合关键领域高可靠、强实时的要求,基于时空分区的隔离机制,开发了 C 语言的 Shyper 虚拟机监控器,该监控器已经通过了 EAL5+ 认证。在操作系统内核方面,基于复杂网络理论,针对 Linux 内核提出了基于年龄的演化模型,合理地解释了操作系统网络特征的形成机理。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18295

    浏览量

    288609
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206745
  • 开源
    +关注

    关注

    3

    文章

    2991

    浏览量

    41723
  • 虚拟机
    +关注

    关注

    1

    文章

    855

    浏览量

    27384
  • Rust
    +关注

    关注

    1

    文章

    223

    浏览量

    6387

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

文章出处:【微信号:openEulercommunity,微信公众号:openEuler】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何成为一名嵌入式C语言高手?

    高手需要掌握C语言基础、了解嵌入式系统的硬件架构和工作原理,通过实践项目提升技能,并积极参与开源项目和技术社区。持续学习和自我提升是成为嵌入式C语言
    发表于 03-25 14:12

    如何成为一名嵌入式C语言高手?

    高手需要掌握C语言基础、了解嵌入式系统的硬件架构和工作原理,通过实践项目提升技能,并积极参与开源项目和技术社区。持续学习和自我提升是成为嵌入式C语言
    发表于 04-07 16:03

    嵌入式系统的开源软件发展如何?

    利润丰厚的PC市场,退一步也可以保住自己的移动终端和已经牢牢把握的嵌入式市场。ARM要想成功,必然要仰仗开源软件;指望微软是不行的,微软有太多的历史包袱和既得利益,在Windows 7是否支持ARM
    发表于 09-27 07:51

    2020 年,嵌入式开发工程师的两大必知必会

    嵌入式系统、固件开发、驱动程序开发等),选择相应的书籍。 除了C/C++之外,该领域没有真正占据实际市场份额的编程语言,但是下面的新起之秀值得关注。 Rust 今年我一定要把学习 Rust
    发表于 05-08 08:27

    嵌入式相关开源项目资料分享

    关注+星标公众号,不错过精彩内容来源 | 嵌入式大杂烩学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言、单片机、开源项目、物联网、操作系统、Li
    发表于 10-27 09:13

    嵌入式C语言程序设计基础大汇总

      学习嵌入式的基础语言是C语言,因此先掌握C语言对于后续嵌入式的学习有着非常大的意义。下面讲解下嵌入式
    发表于 11-09 07:13

    嵌入式C语言必学知识点汇总

    导读:怎么做好嵌入式?相信这个问题无论问谁你都会得到一句学好C语言!今天推荐一篇大佬写的嵌入式C语言知识点总结,非常值得一读。从语法上来说C语言
    发表于 12-15 07:43

    嵌入式SQL语言概述

    嵌入式SQL概述嵌入式SQL语言将SQL语言嵌入到某一种高级语言中使用这种高级
    发表于 12-21 06:55

    怎样去使用Rust进行嵌入式编程呢

    使用Rust进行嵌入式编程Use Rust for embedded development篇首语:Rust的高性能、可靠性和生产力使其适合
    发表于 12-22 07:20

    RUST嵌入式开发中的应用是什么

    Rust是一种编程语言,它使用户能够构建可靠、高效的软件,尤其是用于嵌入式开发的软件。它的特点是:高性能:Rust具有惊人的速度和
    发表于 12-24 08:34

    嵌入式常用的开源库是什么

    阅读目录 linux/嵌入式常用开源库列表其他资料参考资料linux下/嵌入式常用的开源库名字及简介,使用文档和教程可以自己百度 (自己整理,不定时完善) linux/
    发表于 12-24 06:53

    嵌入式C语言的知识点汇总,绝对实用

    1 嵌入式C语言总结从语法上来说C语言并不复杂, 但编写优质可靠嵌入式C程序并非易事,不仅需要熟知硬件特性和缺陷,还需要对编译原理和计算机
    发表于 02-17 06:10

    嵌入式用什么语言编程?

    嵌入式用什么语言编程? 嵌入式系统应用越来越广泛,专业的嵌入式工程师对这样的问题肯定不会太关注,只是针对一些初级入门者,做个简单的了解,认识一下这个广受关注的技术是由哪种
    发表于 05-18 10:08

    为什么要用Rust进行嵌入式开发

    提示信息 为什么要用 Rust 进行嵌入式开发 Rust 的设计理念:既要安全,也要高性能。Rust 的设计理念完全是嵌入式开发所需要的。
    的头像 发表于 11-06 10:04 2580次阅读

    适合嵌入式设备开发的编程语言Rust语言

    Rust语言是二十一世纪的语言新星。Rust被人广泛承认的一点,就是因为它能运行在多样的目标上,从桌面和服务器设备,到资源有限的嵌入式设备。
    发表于 09-12 09:39 1647次阅读
    适合<b class='flag-5'>嵌入式</b>设备开发的编程<b class='flag-5'>语言</b>—<b class='flag-5'>Rust</b><b class='flag-5'>语言</b>