嵌入式系统的虚拟化(小设备虚拟机监控程序的方式和原因)

IBMdW 发布于 2011/05/13 23:35
阅读 663
收藏 6

当今的技术新闻充斥着服务器和桌面机虚拟化的故事,但还有一种虚拟化技术发展迅猛:嵌入式虚拟化。嵌入式领域包含几个有用的虚拟化应用领域:移动手持式设备、安全性内核和并发性嵌入式操作系统。本文探索嵌入式虚拟化领域,解释嵌入式虚拟化进入您身边的嵌入式系统的原因。

不仅仅只有虚拟化创造的市场和机遇正在 “爆炸”,虚拟化的变体也在增长。尽管虚拟化诞生于大型机,但它在服务器中占据了关键位置。对于大量工作负载而言,服务器利用率很低,而虚拟化允许在单个 服务器上托管多个服务器实例,从而减少成本、管理和固定资产。因此,虚拟化以 “Ⅱ型”(或托管 )虚拟机监控程序的形式进入消费者领域,虚拟机监控程序允许在单个桌面机上同时运行多个操作系统。下一个创新是虚拟化的桌面机,允许一个服务器使用最少的客户机端点通过一个网络托管多个客户机(瘦客户机)。但在今天,虚拟化正在进入一个新的海量空间:嵌入式设备。

鉴于虚拟化实现的优势持续增长,这种演变并不那么令人吃惊。虚拟化在 IBM 大型机上诞生并发展,然后随着计算技术的演变进入服务器、桌面机和现在的嵌入式设备。上世纪 90 年代,虚拟化发展到大型机之外,借助原生微处理器的支持,经历了一次复兴(见图 1)。


图 1. Ⅰ型虚拟机监控程序的简单时间线
Ⅰ型虚拟机监控程序的简单时间线图示

本文将探索其中的一些应用领域,展示虚拟化如何延伸其触角,找到新的应用领域。本文还将探索开源技术在虚拟化应用过程中的引导作用。

什么是嵌入式虚拟化?

嵌入式虚拟化 是指嵌入式系统中部署的Ⅰ型虚拟机监控程序。但是,这种说法有些自相矛盾。嵌入式系统 的一种定义是:设计用于执行少数专用功能的计算机系统。但如果向嵌入式系统添加一个虚拟机监控程序,将添加灵活性和一些高级功能,将嵌入式设备转变为一种新型系统。

虚拟机监控程序 是一种特殊操作系统,直接在裸机上运行(针对Ⅰ型虚拟机监控程序情况)。虚拟机监控程序创建一个底层硬件平台抽象,这样,一个或多个虚拟机(VM)无需知 道它们共享平台即可使用这个底层硬件平台。在这种环境中,VM 只是操作系统及其应用程序的容器。这种环境的一个有趣的优点是一个 VM 与虚拟机监控程序上运行的其他 VMs 隔离,这支持多个操作系统或多个配置不同的相似操作系统。 这种隔离还提供一些好处,我们将稍后介绍。

另外,嵌入式虚拟机监控程序是一个虚拟平台和一个微核的混合物(见图 2)。这种状态允许虚拟机监控程序支持 VMs(操作系统和应用程序)和单独的应用程序。


图 2. 裸机操作系统和虚拟机监控程序
裸机操作系统和虚拟机监控程序

尽管嵌入式设备一直受到严格的资源限制,但今天的设备范围广泛:从拥有服务器级功能(比如对虚拟化的硬件支持)的强大处理器到拥有计较少容量和资源的功耗优化系统。对于嵌入式虚拟机监控程序,这种多样性创建了一个比它们的大型机和服务器 “兄弟” 要求更高的环境。

嵌入式虚拟化的特征

与传统虚拟机监控程序不同,嵌入式虚拟机监控程序实现了一种不同的抽象,拥有与其他平台不同的限制。本节探索嵌入式空间中提供的一些限制和功能。

效率

所有虚拟机监控程序都致力于提高效率,但嵌入式虚拟机监控程序必须处理在传统虚拟化环境之外添加的限制。因此,嵌入式虚拟机监控程序必须规模小,且拥有极高的内存使用效率。

安全性

规模小有其优势。应用程序的代码越小,就越容易验证和证明它是没有 bug 的。事实上,有些嵌入式虚拟机监控程序供应商已经正式验证了他们的虚拟机监控程序,并保证它们没有 bug。虚拟机监控程序越小,平台就可能越安全可靠。这是因为虚拟机监控程序通常是系统惟一以特权模式运行的部分,充当 所谓的可信计算基(Trusted Computing Base,TCB),形成一个更安全的平台。

通信

嵌入式虚拟机监控程序的目的在于与多个来宾和应用程序共享一个硬件平台,但通常还扩展一些通信方法以便它们交互。这个通信通道既有效又安全,允许特权和非特权应用程序并存。

隔离

隔离来宾和应用程序的能力与安全性相关。除了提供安全性和可靠性的容器之外,这种能力还提供许可隔离方面的好处。使用嵌入式虚拟机监控程序的 通信机制允许专有软件和开源软件在隔离的环境中共存。随着嵌入式设备变得更加开放,混合专有软件和第三方或开源软件的愿望成为一个重要需求。

实时功能

最后,嵌入式虚拟机监控程序必须支持拥有实时功能的调度。对于手持式设备,虚拟机监控程序能够与核心通信功能和第三方应用程序共享平台。具有实时特征的调度允许这些关键功能与一些尽力运行的应用程序共存。

嵌入式虚拟机监控程序示例

已经出现了几个用于处理嵌入式领域中的应用程序的虚拟机监控程序 — 它们不仅来自开源社区,而且还有一些专有版本。VMware 引入了 Mobile Virtualization Platform 来处理一个日益普遍的使用模型:商用和个人智能电话。通过在一部智能电话上采用一个嵌入式虚拟机监控程序,单个设备可以通过在单独的容器(VMs)中隔离 两个使用模型同时用于安全的公司用途和个人用途。

下面我们探索一些处理这种和其他用途的解决方案(包括开源方案)。

PikeOS

PikeOS 是一个有趣的架构,因为它主要实现了一个所谓的分离内核(separation kernel)。与虚拟机 监控程序类似,分离(或分区)内核安全地隔离上级来宾的环境。PikeOS 用于处理航空电子工业中安全性至关重要的航空电子应用程序。引入一个嵌入式虚拟机监控程序允许在同一个平台上同时使用较早的遗留应用程序(在一个 VM 中)和更新的应用程序(见图 3)。


图 3. PikeOS 嵌入式虚拟化
使用 PikeOS 的嵌入式虚拟化

在内核领域中,PikeOS 实现了一套架构和平台支持包,用于特殊的硬件环境(x86、PowerPC、SuperH 等)以及提供虚拟化平台的分离微核。PikeOS 不仅支持来宾操作系统(及其关联应用程序),还支持针对一个特定问题领域的更简单的应用程序编程接口和运行时环境(RTE),比如 PikeOS 原生接口和实时 Java™。

PikeOS 系统软件层向来宾分配资源(空间和时间)。此系统依赖半虚拟化,以便来宾操作系统意识到它们已被虚拟化。

尽管通常用于航空电子工业,但 PikeOS 不久以后有可能通过 Automotive Open System Architecture (AUTOSAR) 进入您的汽车。您可以在 参考资料 中了解更多信息。

OKL4

2006 年,Open Kernel Labs (OK Labs) 创立,致力于为嵌入式系统开发微核和虚拟机监控程序。这个实验室在这些领域中的工作创造了一个术语:microvisor,表示一个具有虚拟化功能的微核。OK Labs 在嵌入式虚拟化领域中取得了迄今为止最大的成功,其开源 OKL4 microvisor 已部署到超过 10 亿台设备中, 比如 Evoke QA4 消息传递电话 — 第一部支持虚拟化和两个并发操作系统(包括 Linux®)运行的电话。

OKL4 继承了 L4 微核系列(由 Jochen Liedtke 开发)的遗产。L4 的灵感来自 Mach,Mach 是卡内基梅隆大学开发的微核,作为传统 UNIX® 内核的一个 “简易(drop-in)” 替代者。L4 最初完全在 x86 Assembly 中设计,以便实现一个最优解决方案。后来,它用 C++ 开发,现在存在于一系列微核中:从 L4Ka::Hazelnut(针对 Intel® Architecture、32 位和基于 ARM 的架构设计)到 L4Ka::Pistachio(针对平台独立性设计,在 Berkeley Software Distribution 许可下发布)。

OKL4 实现了名为安全单元 的分区,用于对此架构中的 VMs 进行分区。OKL4 microvisor 占据了特权内核空间,所有 VMs、原生应用程序和驱动程序被推到单独的隔离分区中,一种高效的进程间通信(Interprocess Communication,IPC)机制允许各单元进行通信和合作(见图 4)。除 VMs 之间的 传统 IPC 外,由于硬件设备驱动程序被推到 microvisor 之外(这在微核中很常见),因此这种 IPC 很重要:这是一种公共路径输入/输出。另外,由于单独的应用程序和驱动程序可以集成到没有操作系统的平台,因此 OKL4 的组件模型是轻量级的。


图 4. OKL4 microvisor
OKL4 microvisor 图示

microvisor 实现了具有虚拟化功能的核心微核,这些功能包括资源管理以及具有实时功能和低性能开销的调度功能。OKL4 实现了半虚拟化,意味着操作系统必须能在 microvisor 上运行。OK Labs 提供了对几个半虚拟化的操作系统的支持,这些操作系统包括:OK:Linux、OK:Android 和 OK:Symbian。

NOVA

2010 年,NOVA 微虚拟机监控程序问世。与此前的微核架构类似,NOVA 实现了一个瘦微核,包含一些用于非特权代码的独立层。NOVA 利用新硬件平台的虚拟化功能来提高基于组件的系统的性能。

NOVA 包含一个微虚拟机监控程序和用户级环境,用于系统的核心功能。这些核心元素(如图 5 所示)包括:一个根分区管理器(用于管理微内核外的资源分配)、底层硬件设备的驱动程序、用于每个来宾管理(来宾和主机之间的)内存映射的 VM 监控器(VMM)以及敏感指令模拟。NOVA 实现了全面虚拟化,因此某些指令(比如 x86 CPUID)必须针对每个来宾、根据其配置恰当模拟。VMM 还为每个来宾可用的设备实现了设备模拟。由于 NOVA 实现了全面虚拟化,因此支持未更改的来宾操作系统。


图 5. NOVA 微虚拟机监控程序架构
NOVA 微虚拟机监控程序架构

微虚拟机监控程序本身实现了调度器、内存管理和消息传递通信接口,以及其他核心特性,比如保护域(用于空间隔离)和调度上下文(用于临时隔离)。

NOVA 被视为一个第三代微核,它的前辈包括 Mach 和 Chorus(第一代微核)以及 L4(第二代微核)。

Codezero

Codezero Embedded Hypervisor 是一个遵循 LR 架构的新微核,但经过彻底重写,以利用微核设计中的最新研究成果。它遵循微核的基本原理,因为它只在特权微核中实现地址空间、线程管理和 IPC,以及一些虚拟化功能。

如图 6 所示,Codezero 在硬件平台上实现了一个典型的抽象层,这个抽象层实现了线程处理、IPC、地址空间管理、地址空间映射、安全性、电源以及错误恢复管理。Codezero 的调度器包含针对来宾线程和微核线程的内核优先(以及用于优先的时间片)。

Codezero 中的虚拟化通过容器实现。每个容器都是一个隔离的执行环境,包含自己的资源集(内存、线程等)。这种分区还与 Codezero 的安全性和资源管理策略协同工作,这些策略定义每个容器的功能。


图 6. 嵌入管理程序架构的 Codezero
嵌入管理程序架构的 Codezero

Codezero 受益于最新微核设计成果。为提高效率,Codezero 实现了三种 IPC(全部基于约会模型[rendezvous model])。Codezero 实现了短 IPC(在用户空间线程之间)、全面 IPC(256 字节)和扩展 IPC(2048 字节)。大型缓冲区的 IPC 通过共享页面映射执行。Codezero 还专门针对嵌入式系统设计,支持多核处理器和基于 ARM 的设计。

嵌入管理程序的应用程序

嵌入管理程序的应用程序正在不断增多。当今最常见的应用领域之一是移动电话,在移动电话中,可信和安全的应用程序(基带管理)与第三方和不可 信的应用程序共享平台。虚拟机监控程序提供的隔离是它们在这个领域获得成功的一个关键因素。随着操作系统和应用程序的发展,快速增长的平板电脑市场也会出 现这种技术的应用。

但嵌入式虚拟机监控程序的应用延伸到手持式设备和平板电脑之外。深度嵌入的航空电子和汽车应用程序也正在利用虚拟机监控程序的隔离和可靠性。关注安全性、耐受性和高度可配置性的系统也在利用这种技术。

 

嵌入式虚拟化的未来

正如您所看到的大量嵌入式虚拟机监控程序示例所示,微核可能是它们的架构和实现中的一种常见设计模式。这种方法通常精简高效,有利于提高性 能,减少代码,改善安全性和可靠性(以 TCB 为基础)。虚拟机监控程序将继续作为一个有趣的研究目标,开拓新的应用领域。虚拟化和嵌入式系统的下一步发展肯定非同寻常,让我们拭目以待。

加载中
返回顶部
顶部