购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 嵌入式Hypervisor

顾名思义,嵌入式Hypervisor是应用在嵌入式硬件资源上的Ⅰ型Hypervisor。嵌入式Hypervisor虽然与企业云、数据中心的虚拟化产品同为Ⅰ型Hypervisor,但有着自己的特征,不仅要求软件高度定制以及硬件资源受限,而且相比传统Ⅰ型Hypervisor更侧重安全性和实时性。

1.3.1 嵌入式Hypervisor概述

随着互联网和无线通信等技术的发展,越来越多的嵌入式设备已经接入互联网,可以同传统的PC一样跨越空间和时间的限制去获取更多的信息,但也带来了类似PC的信息安全问题。随着应用的复杂化,嵌入式设备大量使用定制化操作系统,因此与GPOS一样会存在安全漏洞和设计缺陷,导致软件可靠性和防危性下降,研发周期加长,风险增加,所以保障嵌入系统的可靠性变得愈加重要。

1.传统嵌入式系统面临的挑战

目前传统嵌入式系统面临的安全问题主要包含以下3个方面。

1)嵌入式系统软件和应用程序本身的漏洞。操作系统设计与实现中的错误会留下被入侵的安全隐患,比如内存保护机制缺失、缓存溢出漏洞等。

2)病毒、特洛伊木马程序等网络攻击。

3)人为操作导致的破坏。有些嵌入式系统的配置和操作比较复杂,很可能出现人为操作错误,留下安全隐患。

相比普通的嵌入式系统(iOS或者Android)而言,任务关键型和以安全为中心的嵌入式系统对安全性的要求十分苛刻。如果普通的嵌入式系统遇到某个程序运行失效,只会造成系统资源的消耗和较差的用户体验。而在侧重安全和可靠性的操作系统中,如果部分应用程序运行出错就放弃执行,那么必将导致灾难性的后果。比如,飞行控制系统一旦放弃执行应用程序就会面临坠机风险。因此,如何保证嵌入式系统的防危能力,避免由于系统缺陷或操作人员的误操作导致灾难性事故的发生,是当前嵌入式领域十分重要的研究课题。

构造高可靠性的嵌入式系统,首先要从软件架构的设计上着手,着重解决容错性、实时性等问题。嵌入式Hypervisor正是满足这方面需求的不二之选。

2.嵌入式Hypervisor的特点

嵌入式Hypervisor具有以下特点。

1) 高效性 。Hypervisor一般都力求提高效率,但嵌入式Hypervisor受到内存、外围设备、功耗等方面的限制,必须能够非常精简且高效地使用硬件资源。

2) 代码量小 。应用程序的代码量越少,就越容易查找错误。一些嵌入式Hypervisor的供应商就是通过数学方法验证Hypervisor有没有错误。Hypervisor是系统中唯一以特权模式运行的软件,Hypervisor包含的错误越少,平台就越安全可靠。

3) 多核系统支持 。目前,新的嵌入式处理器普遍利用多核架构来提高性能,嵌入式Hypervisor可以管理底层架构,为遗留应用程序提供单处理器环境,同时有效支持多核处理器进行系统设计。

4) 实时性 。具有实时性要求的虚拟机内部应用程序必须以可预测的方式执行。虚拟机应用的实时性受到底层软件(即Hypervisor和客户操作系统)和硬件的影响。从Hypervisor的角度来说,可预测性涉及Hypervisor所提供的服务以及虚拟机中的客户操作系统。嵌入式Hypervisor提供给虚拟机的服务必须具有可预测性,以满足虚拟机的确定性要求。比如对无人机系统来说,Hypervisor可以保证飞控系统和第三方应用程序(图传系统)共享硬件平台并相互隔离,并保障运行飞控系统的虚拟机满足实时性要求。


提示: 这里的“实时”表示控制系统能够及时处理系统中发生的、要求控制的外部事件。从事件发生到系统产生响应的反应时间称为延迟。对实时系统来说,一个最重要的条件就是延迟有确定的上界(这样的系统属于确定性系统)。因此本书中实时性和确定性为同义词,指的是对外部事件的响应时间具有一个确定的上界。


3.嵌入式Hypervisor的应用领域

嵌入式Hypervisor在以下4个领域有着成熟的应用。

1)在航空领域,ARINC653标准已经是IMA(Integrated Modular Avionics,综合模块化航空电子设备)架构的标准应用接口,符合ARINC653标准的Ⅰ型Hypervisor是航空电子系统领域的基础软件。

2)在车载领域,汽车通过在若干个互相隔离的虚拟机上分别运行车载娱乐操作系统、AUTOSAR(汽车开放系统架构)操作系统和RTOS,使得软件系统可以在异常检测、故障隔离方面开展更多工作,并确保一旦出现问题,故障也能够在早期被识别和处理,避免故障向其他领域蔓延。

3)在工业领域,目前,工业领域中的设备和传感器越来越多地与互联网连接,Hypervisor可以用于管理和隔离这些设备之间的不同应用程序,以确保安全性和可靠性。

4)在医疗领域,安全性和隔离性至关重要。Hypervisor可以简化功能组件的更新过程,通过在虚拟机级别进行更新,减少对整个设备的干扰;Hypervisor支持冗余配置和备份虚拟机,确保即使在硬件或软件发生故障的情况下,设备仍然可用。

1.3.2 嵌入式Hypervisor的设计理念

嵌入式Hypervisor的设计必须从根本着手,同时解决容错性、实时性问题,才能为构造高可靠的嵌入式系统提供全面的保障。

1.实现隔离的方法

如图1-13所示,Hypervisor通过时空域隔离的虚拟机和中间层的引入实现了对虚拟机的隔离,降低了虚拟机之间的耦合性,从而提供了安全、可靠和高效的虚拟化环境。

图1-13 嵌入式Hypervisor的实现方式

(1)虚拟机隔离

分区 二隔离是从广度上来考虑嵌入式系统的可靠性设计。因为嵌入式系统运行的基本单元是任务,而一个任务所占用的主要资源是内存空间和CPU时间。因此可以从这两个方面对虚拟机进行隔离设计,将不同的任务放在时间和空间上隔离的虚拟机中运行,使其互不影响。因为每个任务在各自不同的虚拟机中运行,所以对其他任务没有干扰,增强了系统的可靠性。

(2)增加中间层

英国著名计算机科学家大卫·惠勒(David Wheeler)曾说过一句名言:“All problems in computer science can be solved by another level of indirection.”意思是说计算机科学领域内的一切问题都可以通过增加一个中间层来解决。嵌入式系统通过增加一个中间层可提高其可靠性。在嵌入式系统中,通过引入Hypervisor层实现了对硬件资源的抽象和分离,从而降低了虚拟机之间的耦合性。每个虚拟机都被视为独立的实体,可以自主运行和管理自己的操作系统及应用程序,而不受其他虚拟机的影响。这种隔离性使得虚拟化环境更加安全和可靠,同时提供了更高的资源利用率和更灵活的系统配置。

(3)降低耦合性

低耦合性是一种重要的设计模式:一方面降低了因一个模块的变化而影响其他模块的可能性;另一方面使得模块更内聚,结构更简单,可裁剪性更强,代码更具可读性。在嵌入式系统软件的设计中采用低耦合的思想有助于提高系统的可靠性。以VxWorks RTOS为例,其Wind内核包含任务管理、同步通信、内存管理等功能,这些功能往往和设备驱动内聚在一起,任何一个模块的错误都将导致系统崩溃。究其原因,RTOS内核功能模块间的耦合度太高,导致其可靠性降低。因此可采用低耦合的思想拆分各个功能模块,重新组织RTOS的结构,使其各个模块独立开来,以增强系统的可靠性。

总之,嵌入式Hypervisor设计的核心思想在于“隔离”。无论是采用时空域隔离的虚拟机策略、执行隔离的中间层,还是低耦合的功能模块,无不体现着隔离的思想。

2.基于嵌入式Hypervisor的MOSA架构

从设计理念来讲,RTOS可以分为3类:①基于线程的实时系统(Thread-based RTOS),比如μC/OS-Ⅱ、FreeRTOS、VxWorks等传统的实时系统,系统中的线程共享全局平板内存(Flat Memory);②基于进程的实时系统(Process-based RTOS)。比如VxWorks-rtp、realtime-linux系统,进程在一定程度上实现了内存隔离;③基于Hypervisor的模块化开放系统方法(Modular Open System Approach,MOSA)。比如Wind River公司的Hypervisor系列和VxWorks 653系统、Lynx公司的LynxSecure系统、Thales(泰莱斯)公司的PikeOS、Green Hills软件公司的INTEGRITY RTOS。航空领域通过DO-178B/C适航认证的嵌入式RTOS(比如INTEGRITY-178B/C、VxWorks 653、LynxOS-178)无一不是基于嵌入式Hypervisor的系统架构。

嵌入式Hypervisor的基本设计理念是分区隔离、到期回收、责任分配以及通信审核。

1)分区隔离即分而治之,各分区之间和平共处,不得冲突。原则上,需要共享数据的应用尽量集中在同一虚拟机内。

2)到期回收即到期回收资源使用权,交由其他分区,不得陷入超时等待。

3)责任分配即责任分配到分区内,故障自理,以简化Hypervisor的整体架构,越简单越健壮。

4)通信审核是指虚拟机之间的数据交互必须经过Hypervisor授权。通信内容应该尽可能高效,避免授权过程带来的额外开销。

本着以上4项设计理念,基于嵌入式Hypervisor的MOSA架构如图1-14所示。

图1-14 嵌入式Hypervisor的MOSA架构

3.嵌入式Hypervisor的实现

嵌入式Hypervisor的实现侧重于以下两个方面。

(1)资源分区

通过虚拟机实现操作系统构成模块的分隔是一种有效的资源分区方式。在这种模式下,驱动、文件系统等与虚拟机无关的模块可以通过内存映射、寄存器地址映射等方式将硬件资源划分给各个分区,从而实现虚拟机对这些资源的独占操作。这种资源分区方式有助于分化责任,降低Hypervisor的负担,提高MOSA平台的安全性与稳定性。正如法国著名飞行家和作家安东尼·德·圣-埃克苏佩里(Antoine de Saint-Exupéry)所说:“A designer knows he has achieved perfection, not when there is nothing more to add, but when there is nothing left to take away.”中文意思是说:“设计师知道自己的设计已经达到完美,不是因为再也没有东西可添加,而是再也没有东西可以拿掉了。”这句名言强调了简化和精简系统的重要性,通过去除不必要的元素和功能,可以实现更高效、更稳定的系统。

(2)分区间互访

分区间互访在原则上违背了隔离的理念,因此并非所有RTOS供应商都推崇。但许多军用设备有MILS(Multiple Independent Levels of Security,多独立安全级别)的需求,要求单个物理设备平台支持多个独立的应用(每个应用具备独立的安全级别,互访需遵循权限高低规则),便于精简硬件,降低现场携带负担。而MILS的SKPP(Security Kernel Protection Profile,安全内核保护概要)要求支持基于权限的分区间信息交互,且必须受Hypervisor管制。但是如果若干应用之间的数据流是紧密耦合的,在设计时仍然不推荐把这些应用分离在多个分区中互访。

秉持极小化(Less is More)设计以及策略(mechanism)和机制(policy)相分离的原则,Hypervisor仅提供可靠性的机制,而将可靠性的策略交给虚拟机中的应用程序完成。策略和机制相分离的指导思想可以使Hypervisor变得精简而稳定。 SKVsLFUHXLJKDjJAbq+SVT6skXuEeDDeAn3E2g78ZgrXKRc0ABiA5CK/h4y4Q8x3

点击中间区域
呼出菜单
上一章
目录
下一章
×