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

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

3天内不再提示

针对嵌入式计算优化虚拟化

星星科技指导员 来源:militaryembedded 作者:RICH JAENICKE 2022-11-15 16:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

许多嵌入式系统已经采用系统虚拟化,通过使用虚拟机(VM)将虚拟和物理系统分离。关键任务嵌入式系统中的虚拟化可以使用类似于企业系统使用的技术来实现,但嵌入式虚拟化的不同用例为与嵌入式系统的优先级更紧密地一致的其他解决方案打开了大门。

自 2000 年代初以来,虚拟化已广泛部署在企业服务器中。服务器虚拟化的最初驱动力是关于服务器整合的,它将运行不同应用程序的多个未充分利用的服务器的服务合并到一台计算机上。减少服务器数量节省了资本和运营成本。这种整合需要工作负载隔离,将应用程序彼此分开,并将系统的其余部分分开,从而提供某种程度的安全性和应用程序自主性。由于虚拟机 (VM) 将应用程序与其所依赖的操作系统配对,因此虚拟化还允许将 VM 从一台服务器迁移到另一台服务器,从而在各种任务关键型军事应用程序中实现高可用性、负载平衡和额外的节能。

服务器虚拟化的辅助驱动器是运行为不同操作系统 (OS) 或不同版本的操作系统设计的应用程序的能力。例如,运行Linux的工程工作站通常也运行Microsoft Windows以与业务应用程序进行交互。这对于支持遗留系统特别有用,例如从大型机迁移到服务器时。

嵌入式虚拟化用例

嵌入式虚拟化与企业用例有很多重叠,但具有不同的优先级和附加要求。嵌入式虚拟化的主要用例是支持异构操作系统和提高安全性。次要用例可能包括工作负载整合、软件许可证隔离以及促进向多核处理器的迁移。支持异构操作系统的常见驱动因素是需要为某些应用程序支持通用操作系统,例如 Linux 和 Windows,而关键和受信任的应用程序在实时操作系统 (RTOS) 上运行。在具有混合关键性的系统中,提高安全性尤为重要,以便将不太重要的应用程序与具有更关键的实时、安全或安保要求的应用程序隔离开来。

在评估安全解决方案时,一个关键概念是受信任计算基础 (TCB) 的大小,该计算基础由实施安全策略的硬件、软件和控制组成。总体目标是最小化 TCB 的大小和接口的数量,以便更容易地进行验证。TCB 和接口数越大,攻击面就越大。最小化 TCB 需要将许多非关键服务移出 TCB,这反过来又需要能够隔离这些服务,并在受信任和不受信任的组件之间提供安全通信。请注意,最小化 TCB 不是最终目标,而只是简化验证的一种手段。对于需要高安全性的系统,最终目标是根据适用的安全保证要求进行认证

与服务器虚拟化中的虚拟机不同,嵌入式系统中的应用程序通常是高度集成的,需要协作。随后,解决方案的一部分需要包括可预测的低延迟、高带宽通信路径,其权限由安全 TCB 强制执行。特别是对于嵌入式实时系统,满足异构操作系统的虚拟化目标和提高安全性不能以牺牲系统的确定性或大大增加的延迟为代价。对于安全关键系统来说,情况更是如此。维护确定性对任何虚拟化解决方案来说都是一个挑战,因为高效的虚拟化实现通常使用启发式方法来识别不同操作系统和给定操作系统的不同版本的代码序列的变化。

虚拟化的硬件支持

众所周知,x86 处理器的早期虚拟化性能低下,因为缺乏对虚拟化的硬件支持,包括虚拟化内存管理单元 (MMU) 和输入/输出内存管理单元 (IOMMU)。现代处理器为硬件辅助虚拟化提供支持。一个例子是英特尔 VT-x 和 VT-d。

英特尔 VT-x 提供了进入和退出虚拟执行模式的说明,在该模式下,访客操作系统将自己视为以完全权限运行,而主机操作系统仍受到保护。内存虚拟化实际上需要两个级别的虚拟化。首先,来宾操作系统将从物理地址空间到虚拟地址空间的映射存储在页表中。该来宾操作系统无法直接访问物理内存,因此虚拟机监视器 (VMM) 需要提供这些页表的虚拟化。对于英特尔处理器,页表虚拟化的加速称为扩展页表 (EPT)。

面向定向 I/O 的英特尔虚拟化技术(英特尔 VT-d)为重新映射直接内存访问 (DMA) 传输和设备生成的中断提供了硬件辅助。IOMMU 跟踪哪些物理内存区域映射到哪些 I/O 设备。分配给特定 VM 的 I/O 设备不能被其他 VM 访问,I/O 设备也无法访问其他 VM。

即使支持 IOMMU,VMM 仍需要将数据从网络接口芯片 (NIC) 复制到虚拟机,反之亦然。PCI-SIG 的单根 I/O 虚拟化 (SR-IOV) 标准将 VMM 从将数据移入和移出虚拟机的过程中移除。数据直接在 VM 之间通过 DMA 传输,VMM 中的软件开关永远不会碰它。

虽然虚拟化硬件加速的关键技术是在芯片级实现的,但板级决策也会影响系统性能。例如,具有最多虚拟化功能的处理器通常是消耗最多功率的处理器,因此通常需要在优化尺寸、重量和功耗 (SWaP) 方面做出权衡决策。NIC 的选择会影响加速哪些 I/O 虚拟化功能。电路板上的内存量也是一个重要的考虑因素,因为虚拟化会消耗大量内存。

嵌入式虚拟化技术

一旦底层硬件已经建立并支持虚拟化的需求,下一个问题是使用什么软件虚拟化技术。在企业领域,主要选择是类型 1和类型 2 虚拟机管理程序,其中类型 1 在裸机上运行,类型 2 在另一个操作系统上运行。对于嵌入式系统,还有第三种选择:具有虚拟化层的微内核。尽管将任何给定的解决方案放入这三个存储桶之一中很方便,但现实情况是,类型 1 和类型 2 之间存在灰色区域,并且可以使用微内核技术实现类型 1 虚拟机管理程序。即使有一定程度的重叠,查看定义特征和功能也很有用。

虚拟机管理程序(也称为虚拟机监视器 (VMM))始于企业系统,几乎没有资源限制。因此,许多虚拟机管理程序及其虚拟机都是重量级结构,通常包括设备驱动程序等功能,有时甚至包括网络堆栈和文件系统。所有这些功能都需要大型 TCB。网络堆栈具有特别高的安全风险,如最近的“URGENT/11”漏洞所示。对于类型 1 和类型 2 虚拟机管理程序,来宾操作系统与应用程序一起在虚拟机内运行。尽管在裸机上运行的 Type 1 虚拟机管理程序通常效率更高,但如果只有一小部分应用程序需要来宾操作系统,则类型 2 虚拟机管理程序可能是正确的解决方案。在企业环境中,一个例子是工程环境(例如 Linux)或创意环境(如 macOS),它需要运行仅在 Windows 上运行的业务应用程序。同样,嵌入式系统通常混合了实时和非实时要求。使用 Type 2 虚拟机管理程序,较大的实时应用程序集将仅依赖于基本 RTOS,而不是 RTOS 和虚拟机管理程序,而只有非实时应用程序才会产生来宾操作系统、虚拟机管理程序和主机操作系统的虚拟化开销。

微内核来自不同的方向,旨在通过将服务(包括虚拟化)移动到用户模式服务器来减少内核中执行的代码量。这也最大限度地减少了TCB,以提高安全性和安全性。提供来宾操作系统支持的虚拟化层可以在用户空间中实现,类似于类型 2 虚拟机管理程序,以及网络堆栈和文件系统。请注意,隔离基础是在微内核中实现的,包括使用硬件虚拟化功能。

从可信计算库中获取虚拟化层对于安全性和安全性都是一个显着的优势,因为虚拟化代码可能很大。要使来宾操作系统认为它在裸机上运行,必须对系统的每个部分进行虚拟化。尽管硬件技术加速了内存虚拟化,但直到最近,一些处理器才开始加速某些部分的 I/O。所需的虚拟化的一些示例包括设备仿真、总线仿真以及中断仿真和路由。所有这些仿真的代码都非常大,并且还会造成性能损失。从来宾操作系统对内核的每个调用都需要捕获、检查并确定是否允许来宾操作系统进行该访问。为了使虚拟机管理程序高效,它需要虚拟化指令序列而不是单个指令。这种前瞻功能只是增加虚拟机管理程序已经很大的代码库以最大程度地减少虚拟化性能损失的一个例子。

一种特定类型的微内核是分离内核,它将其控制下的所有导出资源分配到分区中,并且这些分区是隔离的,除了明确允许的信息流。专为最高安全性而设计的分离内核符合美国国家安全局 (NSA) 定义的分离内核保护配置文件 (SKPP),该配置文件是为最恶劣的威胁环境创建的。

虚拟机管理程序和微内核技术的比较

如今,虚拟机管理程序和微内核中具有虚拟化层的广泛功能集之间存在大量重叠。这两种技术都利用基础硬件功能(如多个特权模式/级别、MMU 和 IOMMU)来提供硬件强制隔离,并为不同的应用程序提供单独的地址空间。虚拟机管理程序和具有虚拟化层的微内核都提供了在虚拟化环境中运行多个操作系统的能力,包括混合使用RTOS和非RTOS。即使有这些相似之处,这两种技术在确定性和安全性方面也可能存在显着差异。

基于微内核的实时操作系统从一开始就是为低延迟和高确定性而设计的。在虚拟机管理程序上运行 RTOS 会增加必须拦截和虚拟化的每个系统调用的延迟。结果是延迟增加,确定性降低。为了解决这个问题,一些虚拟机管理程序声称允许在裸机上运行,但这确实是用词不当。即使没有来宾操作系统,应用程序仍然必须在虚拟机监控程序上运行,虚拟机监控程序通常比微内核大。仅在没有来宾操作系统的虚拟机管理程序上运行也意味着没有任务服务、没有信号量和消息传递。

对于安全关键型系统,基于虚拟机管理程序的解决方案需要安全关键型操作系统和经过认证为任何托管应用程序最高级别关键性的虚拟机管理程序。与微内核相比,该代码库的总大小会产生巨大的认证负担,并带来不必要的风险。

或者,具有虚拟化层的微内核通过将更高延迟和降低确定性的虚拟化副作用限制为仅运行主机微内核 RTOS 的应用程序来实现更高的性能。在安全关键型系统中,非关键应用程序可以在虚拟化层上运行,而不会增加认证所需的代码库大小。

安全性通常是考虑虚拟机监控程序的最常被引用的原因。一个常见的误解是,虚拟机管理程序本质上是安全的,因为它们利用硬件来强制实施虚拟地址空间和虚拟 I/O 来隔离虚拟机。首先,其他技术(如分区操作系统和分离内核)也使用相同的硬件功能来强制隔离。但是,安全性的主要考虑因素是完整解决方案的安全性仅与底层软件一样安全。虚拟机管理程序已被证明容易受到漏洞的影响,这些缺陷可能允许通过缓冲区溢出和其他漏洞执行代码。例如,2018年初披露的Spectre漏洞可以诱使虚拟机管理程序向来宾应用程序泄露机密。由于虚拟机管理程序在来宾操作系统下运行,因此 VM 无法检测到受损的虚拟机管理程序。这样的漏洞甚至有一个吸引人的名字:超级劫持。

微内核具有较小的TCB,而使用分离内核技术的微内核可以具有最高级别的安全性和隔离性。该安全级别的证明是 NSA 发布的 SKPP 认证或类似的安全标准,例如通用标准 EAL6。一些虚拟机管理程序包含一些分离内核原则以提高安全性,但没有虚拟机管理程序经过 SKPP 或类似安全标准(如通用标准 EAL6)的认证。对于需要隔离但不需要虚拟化的系统,基于微内核的分离内核可提供最高级别的安全性,而无需虚拟机管理程序的开销和扩展代码库。

针对性能和安全性进行优化

针对最高实时性能和最高安全性进行优化的虚拟化解决方案的一个例子是Green Hills Software的INTEGRITY-178 tuMP RTOS,这是一个基于微内核的分离内核,具有完整的虚拟化服务,包括无需修改即可运行多个来宾操作系统的能力。与基于虚拟机管理程序的虚拟化解决方案相反,实时应用程序可以直接在此 RTOS 上运行,而不会在延迟或确定性方面造成虚拟化层损失。

作为分离内核,RTOS完全隔离多个应用程序/分区,并控制应用程序/分区与外部资源之间的信息流。在某种程度上,这包括保护所有资源免受未经授权的访问,隔离除明确允许的信息流之外的分区,以及一组审计服务。结果是,分离内核提供了高保证的分区和信息流控制,满足 NEAT[不可绕过、可评估、始终调用和防篡改] 安全策略属性。

INTEGRITY-178是唯一获得NSA发布的SKPP认证以及通用标准EAL6+的商业操作系统或虚拟机管理程序。这种安全谱系已经扩展到多核INTEGRITY-178 tuMP RTOS。

审核编辑:郭婷

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

    关注

    5186

    文章

    20150

    浏览量

    328872
  • 服务器
    +关注

    关注

    13

    文章

    10093

    浏览量

    90886
  • 操作系统
    +关注

    关注

    37

    文章

    7329

    浏览量

    128635
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式和FPGA的区别

    ,FPGA凭借硬件并行处理能力,能够实现纳秒级响应,远优于微秒级的嵌入式系统。 功耗效率上,嵌入式系统针对特定应用优化后能效比很高,而FPGA由于可编程特性通常功耗较大,但在特定算法
    发表于 11-19 06:55

    嵌入式系统的定义和应用领域

    应用系统在功能、可靠性、成本、体积和功耗等方面的严格要求的专用计算机系统。 那么,嵌入式系统具体应用在哪些领域呢?事实上,它们的应用非常广泛。例如,在办公自动方面,我们常见的打印机、复印机和传真机
    发表于 11-17 06:49

    嵌入式软件测试与专业测试工具的必要性深度解析

    嵌入式系统作为控制、监视或辅助装置运行的专用计算机系统,其软件测试面临着独特的挑战和严格的要求。专业测试工具在嵌入式软件开发过程中发挥着不可替代的作用,是确保系统可靠性和安全性的关键保障。嵌入
    发表于 09-28 17:42

    嵌入式达到什么水平才能就业?

    :包括GPIO、定时器、中断、ADC 等外设的配置与调试,能实现如温湿度采集、电机控制等功能掌握嵌入式 Linux 驱动开发基础:能编写简单字符设备驱动,实现设备的初始、读写操作,会用内核调试
    发表于 09-15 10:20

    RISC-V 虚拟堆栈和硬件的最新进展

    RISC-V 虚拟是其突破现有应用边界、进入更广泛场景(尤其是高性能计算、云计算、服务器及复杂嵌入式领域)的关键能力。比如,在
    发表于 07-18 16:00 3674次阅读

    Linux嵌入式和单片机嵌入式的区别?

    Processor Unit)。 2. 单片机嵌入式(也称为嵌入式微控制器MCU): 定义:一种集成电路,能够在一个芯片上完成各种计算、控制和管理任务。 特点:小型、低功耗、成
    发表于 06-20 09:46

    聚徽智控——从嵌入式到边缘计算:平板工控电脑的技术进化论

    在工业数字转型的浪潮中,平板工控电脑作为核心终端设备,正经历从嵌入式系统到边缘计算架构的范式革命。这一进化不仅重塑了设备的技术形态,更推动了工业互联从“数据采集”向“智能决策”的跨越。本文将从技术
    的头像 发表于 06-13 13:48 598次阅读

    嵌入式系统存储的软件优化策略

    景存储数据的频率,为保证产品寿命要求,评估选择合适的存储类型和容量。 四、飞凌嵌入式赋能 (1)针对eMMC,根据对寿命及健康信息读取分析,让应用掌握更全面的存储信息,并作出合理的调整。 应用可以实时监控
    发表于 02-28 14:17

    嵌入式主板选型与应用指南

    嵌入式主板是专为嵌入式系统设计的核心硬件平台,广泛应用于工业控制、物联网、医疗设备等领域。以下是关于嵌入式主板的详细介绍:1.嵌入式主板的核心特点紧凑尺寸:通常采用小型
    的头像 发表于 02-27 14:53 936次阅读
    <b class='flag-5'>嵌入式</b>主板选型与应用指南

    嵌入式系统中的代码优化与压缩技术

    与续航能力。 二、代码优化策略 算法优化:这是最基础且有效的优化方式。在图像处理的嵌入式应用中,传统算法可能需要大量的计算资源和时间。
    发表于 02-26 15:00

    如何提高嵌入式代码质量?

    的情况下也必须保持稳定的性能。 3. 硬件依赖:嵌入式软件紧密依赖硬件平台,需要充分理解硬件特性才能编写高效且稳定的代码。 了解这些特点有助于开发人员在编写代码时有针对性地优化和调整,以满足系统的需求
    发表于 01-15 10:48

    嵌入式主板的概述与发展

    未来发展趋势进行深入探讨。嵌入式主板的基本概念嵌入式主板是指为嵌入式系统设计的电路板,它通常集成了微处理器、内存、输入输出接口等关键组件。与一般的计算机主板相比,嵌
    的头像 发表于 01-13 16:30 1185次阅读
    <b class='flag-5'>嵌入式</b>主板的概述与发展

    哪些专业适合学习嵌入式开发?

    市场的80%以上,那什么专业能够轻松转行呢? 1)计算机科学与技术:作为基础学科,计算机科学与技术专业提供了编程、算法、数据结构等基础知识,适合转行到嵌入式、人工智能和物联网领域。 2)电子信息工程
    发表于 01-03 13:44

    新手怎么学嵌入式?

    基本的概念。嵌入式系统是一种将计算机技术嵌入到特定设备中的系统,它通常具有特定的功能和有限的资源。你需要学习一些计算机基础知识,如数据结构、操作系统、
    发表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指将人工智能技术应用于嵌入式系统中的一种技术。嵌入式系统是嵌入到其他设备或系统中的计算机系统,通常用于控制、监测或执行特定任
    的头像 发表于 12-11 09:23 1519次阅读
    什么是<b class='flag-5'>嵌入式</b>人工智能