APP下载

嵌入式虚拟化技术探讨*

2016-07-01王玉松

通信技术 2016年2期

王 健,王玉松,何 伟,陈 振

(1.成都三零瑞通移动通信有限公司,四川 成都 610041;2.电子科技大学,四川 成都 610054)



嵌入式虚拟化技术探讨*

王健1,王玉松1,何伟1,陈振2

(1.成都三零瑞通移动通信有限公司,四川 成都 610041;2.电子科技大学,四川 成都 610054)

摘要:随着智能手机、汽车电子、医疗系统等领域的安全性要求日益突出,虚拟化技术扩展到了嵌入式领域。对嵌入式虚拟化的技术进行了研究,报告了嵌入式虚拟化发展现状,列举了嵌入式虚拟化的多种好处,包括减少嵌入式系统开发成本、缩短产品上市周期、利于减少功耗、增强安全性与可靠性。指出嵌入式虚拟化面临的问题及关键技术,包括实时调度问题、嵌入式硬件平台多样性问题、电源管理问题以及跨虚拟机通信问题。

关键词:嵌入式虚拟化;实时调度;虚拟化管理器

0引言

计算机系统虚拟化是信息安全领域最近的热点技术。虚拟化技术被列为未来三年最值得研究的信息安全战略技术之首。虚拟化是利用软件构造操作系统或其他软件的运行环境的技术[1]。虚拟机管理器(Virtual Machine Monitor,简称VMM)是用来构造虚拟机的软件。操作系统运行在虚拟机中,就像运行在物理计算机上一样。每个虚拟计算机系统都会拥有各自的虚拟硬件平台,包括内存、CPU和外设等,因此虚拟计算机系统可以在一个独立的环境中运行。虚拟化包括如下主要作用:整合和优化资源,提高设备的使用效率,减少场地费用以及其他电力费用,减少企业信息化的运营成本。通过在嵌入式领域中引入虚拟化技术,来实现多个操作系统运行在同一硬件平台上,这样能解决嵌入式领域面临的许多问题。首先,虚拟化技术可以减少嵌入式系统中所使用的芯片数量。其次,虚拟化技术可以缩短应用软件的开发周期。另外,随着越来越多的嵌入式产品能够下载或运行第三方应用软件,尤其是像电子支付这样的应用,安全性因素变得越来越重要[2]。运用虚拟化技术,嵌入式产品开发商可以在单CPU上运行多个虚拟机,这些条虚拟机中可运行相同或不同的操作系统和自己的应用程序[3],由虚拟机管理器来管理这些虚拟机之间的通信(虚拟机管理器比虚拟机具有更高的运行权限)。通过这样架构,如果某虚拟机出现漏洞,虚拟机管理器可切断其与其他虚拟机之间的通信渠道,保证其他虚拟机的数据和功能不受到其攻击和影响。

1嵌入式虚拟化的概念

1.1嵌入式系统

嵌入式操作系统是针对特定应用领域专用的操作系统,它具有多任务、可伸缩、网络可接入、支持特定设备、可伸缩、可裁剪等特性。因此,可以对其进行层次划分,即同一个层次包括同一集合中的功能模块,这样系统将由一个多层次的框架组成,这可以帮助理清嵌入式操作系统的整体结构。因此,可将嵌入式操作系统分为四个层次:硬件接口层、核心层、系统层、系统服务层,

1.2虚拟化技术分类

1)完全虚拟化

完全虚拟化是在底层硬件之上加了一个Hypervisor软件,Hypervisor主要负责处理硬件和客户操作系统之间的协调工作。这种虚拟化技术最大的特点就是客户操作系不用修改就能运行于Hypervisor之上,而它们不知道自己在虚拟化环境下运行。因此,完全虚拟化具有很好的兼容性,以及支持不同版本OS的能力。正是由于这个优点,完全虚拟化技术从开始就受到客户的青睐,而在完全虚拟化技术上做得最成功的就属VMware了[4]。完全虚拟化的主要缺点是Hypervisor会给处理器带来较大开销。

2)泛虚拟化

泛虚拟化也是通过一个Hypervisor来实现多个客户操作系统对底层硬件的共享访问,另外还同时将与虚拟化有关的代码集成到了操作系统本身中。跟完全虚拟化相比,它最大的优点是不需要捕获特权指令,但是需要修改客户操作系统。因此,泛虚拟化会使开发人员的工作量增加,但是对内核的修改可以使系统的性能得到显著提高。目前在泛虚拟化上做得最成功的当属从社区里走出的Xen。

3)硬件辅助虚拟化技术

在硬件辅助虚拟化中,硬件提供结构支持帮助创建虚拟机监视器并且允许客户机操作系统独立运行[5]。英特尔是世界上首个在X86平台上实现硬件辅助虚拟化解决方案的公司,它的硬件辅助虚拟化技术(Intel Virtualization Technology,简称Intel VT技术)是一种更加高效却更简单的技术。它对如何分配给Guest OS想要的Ring特权级别做了很好的改进。而随后AMD也开发出了相应的虚拟化技术,AMD虚拟化(AMD Virtualization Technology)的缩写为“AMD VT”,它是AMD为64位的x86架构提供的虚拟化扩展,但有时仍然会用“Pacifica”(AMD开发这项扩展时的内部项目代码)来指代它。而在嵌入式领域,ARM公司首先使用了硬件辅助虚拟化技术,ARM公司引入了TrustZone虚拟化技术,通过在CPU硬件内核中加入特殊的安全性,为系统提供两个并行执行的环境,使得可以在同一硬件平台上运行两个操作系统。

1.3嵌入式虚拟化

目前,泛虚拟化技术普遍用于嵌入式系统虚拟化中。半虚拟化是指在操作系统和嵌入式硬件平台之间加入VMM,由VMM构建嵌入式操作系统的运行环境形成多个独立的虚拟机。不同虚拟机上可以运行不同或相同的操作系统(客户操作系统),彼此之问隔离。VMM、虚拟机及其应用程序共同构成嵌入式虚拟化系统。系统资源由VMM进行统一分配:对于内存,VMM给各个虚拟机配置不同的内存区域,每个虚拟机只能访问自己的内存区域;对于需不同虚拟机共享的资源,如CPU、MMU、机器时钟和中断控制器,由VMM负责对各个资源的使用权进行调度。这样不同虚拟机可以交替使用资源。

2嵌入式虚拟化的研究现状

VLX技术是由VirtualLogix公司开发的一种嵌入式虚拟机[6]。2009年,VirtualLogix公司在西班牙的移动世界大会上将Android系列2G/3G蜂窝系统中的手机环境(Android mobile phone)解决方案展示给公众,此方案是在ST-Ericsson的单处理器(ARM926)平台之上建立的。VLX架构是位于系统软件层和硬件层之间的一个抽象层,可以通过对硬件实施虚拟化来实现对客户操作系统(RTOS和Linux)对公共资源的请求的处理。VLX对物理内存进行分区,使得每个客户操作系统拥有独立的内存空间,保证客户操作系统可以管理自己辖区内的内存,而不受到其他客户操作系统的干预。VLX架构图如图1所示。

图1 VLX架构

2010年,出现了NOVA微虚拟机监控程序。作为L4微内核OS家族的一员,NOVA致力于用尽可能小的可信计算基构建出一个安全的虚拟化环境,其微内核包括有用于非特权代码的独立层[7]。NOVA是一个基于组件的系统,借助于新硬件平台中虚拟化功能的应用,其性能有明显提高。NOVA由微虚拟机监控程序和用户级环境组成,它一些核心功能放在了用户层上,比如:根分区管理器(用于管理微内核外的资源分配)、底层硬件设备的驱动程序等。NOVA实现了全虚拟化,因此客户操作系统中的某些特权指令会被NOVA模拟成相应的微核指令。其VMM还实现了对每个客户操作系统中可用设备的设备模拟。由于NOVA的这些虚拟化特性,多个未修改的客户操作系统可以同时运行在NOVA上。NOVA的架构如图2所示。

图2 NOVA架构

OKL4的衍生版本Codezero,保留了OKL4的大部分特点及性质,同时又有所增强,例如支持多核架构。它遵循微核的基本原理,因为它只在特权微核中实现地址空间、线程管理和进程问通信,以及一些虚拟化功能。Codezero是位于硬件层和软件层之间的一个虚拟层,通过这个虚拟层可以实现线程处理、进程间通信、地址空间管理、地址空间映射、安全性、电源以及错误恢复管理[8],在其上支持多个操作系统的运行,同时也可以直接运行应用程序。Codezero中的虚拟化是通过容器实现的,每个容器都是一个隔离的执行环境,包含自己的资源集(例如内存和线程等)。这种分区还与Codezero的安全性和资源管理策略协同工作,这些策略定义了每个容器的功能。CodeZero支持最新的Cortex A8,Cortex A9,Cortex A15系列CPU。如图3所示。

图3 Codezero架构

Xen-ARM是由三星公司领导开发的将 Xen hypervisor 移植到嵌入式平台上的项目[9]。这个架构实现了嵌入式处理器对 Xen 的虚拟机管理器的支持。此项目解决了存在于嵌入式虚拟化环境中的多处理器调度问题、实时性问题等。Xen-ARM 位于嵌入式硬件和嵌入式操作系统之间,为其上的内核提供了虚拟化的硬件环境。为了实现虚拟机的安全要求。 Xen-ARM 使用混合模式(Hybrid Model),这样在 Xen-ARM 上的众多虚拟域(Domain)中存在一个特权域(Privileged Domain)来管理其它虚拟域,并提供其它虚拟域访问 I/O 设备的接口。这个特权域即Domain0(Dom0),其它的虚拟域即Domain U(DomU)。Dom0拥有设备驱动(Native Device Driver,原生设备驱动),这样就可以访问物理硬件。Dom0 也提供控制接口,来实现对DomU的管理。DomU 必须通过 Dom0 才能实现访问硬件设备。按照虚拟机领域的定义,运行在 Domain 中的操作系统被称为 GOS(Guest OS)。为了适应 Xen-ARM 需要对Guest OS做一些修改。如图4所示。

图4 Xen-ARM架构

DROP项目(Dresden Real-Time Operating Systems Project)是德国的一个操作系统研究项目。在这个项目的框架下,第二代微内核fiasco诞生了,因为在内核对象之间使用的是非阻塞的同步策略,所以具有很强的实时性。Fiasco是严格按照L4思想设计的微内核,内核只是实现基本的功能,包括7个方面的系统调用,如线程管理、快速IPC (Fast IPC)、修改调度策略和任务管理等。很多操作系统要求的其他的功能,如设备管理、虚拟内存管理、文件管理等都在用户空间通过一些的服务或者库来实现,被称作L4Env。L4eRTL是在第二代微内核L4/Fiasco半虚拟化PaRTiKLe的架构下诞生的。在L4/Fiatico上可以运行多个L4eRTL (虚拟化PaRTiKlc)实例,实例之间保持相互的隔离,位于不同的地址空间。如果某个L4eRTL实例崩溃,其他的L4eRTL实例不受影响,可以正常运行。

图5 L4eRTL架构

3嵌入式虚拟化关键技术

3.1实时调度

调度是指资源的调度,即及时给实时任务提供必需的资源。这里的资源包括各客户操作系统共享的I/O资源、CPU资源以及任务所需要的其它资源。实时任务分为硬实时任务和软实时任务[10],此外,还可能包括非实时任务。实时调度在虚拟化系统中一般由VMM级和客户操作系统级这两个软件层次组成。客户操作系统级实时调度的对象是实时任务。VMM级调度的对象是虚拟机,即实时任务的集合体[11]。两级调度器必须合作有序。完成实时调度可以通过以下两种方法:第一种方法是将各客户操作系统内的实时任务的优先级提取出来,然后映射成全局优先级。由VMM根据全局优先级负责全局调度。这一方法的缺点是新加入的实时任务也要进行重新分析,系统的扩展性受到限制。第二种方法是通过操作系统级调度器向VMM级调度器动态地申请资源,客户操作系统内的实时任务只能使用该操作系统所被分配的资源。VMM级调度器分配资源是根据调度策略来调度的。这一方法避免了建立全局优先级,消除了加入新实时任务时必须做的全局分析所带来的损失,但增加了VMM级调度器的复杂性。

3.2跨虚拟机的进程通信

运行于不同虚拟机内的进程之间可能需要相互通信。高效的做法就是通过共享内存传输大片的数据。但是不同虚拟机的内存空间之间是相互隔离。在虚拟机之间传递共享的内存区域需要涉及到以下操作:VMM检测数据传输是否合法;从输出虚拟机的全局内存空间表中删除共享内存区域,此时共享内存区域归VMM所有;把共享内存区域加到输入进程页表。从输出进程页表删掉共享的内存区域;在输入虚拟机的全局内存空间表中共享内存区域。

另外一种普遍采用的通信方式是消息传递,比如L4微内核的IPC机制。它允许在不同地址空间的线程通过发送消息来通信,通常用于短消息和线程同步。

3.3嵌入式VMM设计考虑

嵌入式系统的软件设计要求与桌面或服务器环境的软件设计要求有所不同。这些要求包括很多方面,比如系统的封闭性和在系统上运行任务的实时性。针对嵌入式系统 ,VMM的设计应该考虑到嵌入式系统独特的隔离要求[12]。VMM如何彼此隔离由一般VMM与嵌入式VMM要求之间的差异决定。绝大多数嵌入式系统是封闭的,即所有的软件由一个厂家编写,用户不能够自己运行自己的软件[13]。而在有些情况下,可以降低通用VMM中的隔离性的要求。在嵌入式系统中,减少隔离可提高性能的预期或提高性能。但在一般情况下,不应该降低隔离,而是应该加固隔离,比如安全嵌入式系统,甚至可以要求认证。通过降低隔离要求以获取最优化性能的方法有两个。第一个方法是运行时不分页。因为跨页使实时系统预期的代码性能有所下降,而且难以有效地满足实时性,同时也将导致整体性能降低。 在Intel VT系统就采用了这种方法。其客户操作系统能读写所有物理内存,包括设备和其他客户操作系统的内存。在一般的通用环境中,这是不允许的,可在一些特定环境下,却是最好的选择。第二个方法是允许直接访问I/O设备。对于嵌入式系统来说,I/O的性能对于整个系统的性能至关重要。这导致一些嵌入式 VMM 厂家允许虚拟机直接访问DMA设备。这样虽然可以提高性能,但是却留下了系统上的其他客户操作系统内存被一些恶意应用或设备驱动读写的隐患,这会造成信息泄露,严重影响系统安全。这些方法虽然会提高嵌入式环境的性能,但是一般支持有关安全和有关安全装置的环境不允许这种折衷。

3.4静态虚拟机

很多嵌入式系统在设计前,就已经知道会运行什么任务,会使用什么硬件。因此,设计者就需要在设计时决定怎样分配运行任务的硬件。这样,当使用嵌入式操作系统时,一般地,设计者给处理任务静态分配指定的内存区域和指定的核。这样可以减少动态内存管理和动态调度等,这些都是在GPOS中完成[14]。在虚拟化环境中,客体操作系统的内存管理和处理器调度工作交由VMM 完成,客户操作系统中的应用程序处理器调度和内存管理由操作系统(OS)负责执行。在嵌入式环境中,对OS的很多要求即是对嵌入式环境中的VMM的要求。此外需要注意,系统设计者可以使用静态配置方式将资源分配给虚拟机。嵌入式环境在以下两个方面对 VMM 的设计做了一些修改:第一,简化了调度的设计,设计者可能手工静态地把任务映射到处理器核。调度发生在同一个核上的虚拟机之间,使用的调度策略与桌面系统使用的调度策略有所不同,简化内核之间的调度。第二,内存管理的设计会更多地针对可配置性,并不是针对动态分配。VMM 拥有设计者规划好的内存区域,然后再把自己的内存区域分配给每个虚拟机。这样虽然使得VMM内存管理的设计有所简化,但是配置VMM却变得更加复杂。

4结语

在人们的日常生活中,嵌入式设备越来越普及。无论是日常生活中使用的移动智能终端,比如手机、平板等消费类电子设备,还是冰箱以及电视、洗衣机这样的大型设备都有着嵌入式设备的贡献,它们正在给人们带来完全不一样的新的生活体验,科技正在快速地改变人们的生活。同时,人们对这些设备的性能也提出了更高的要求。对用户而言,不仅希望系统能够承载丰富的应用软件,还希望系统具有良好的安全性和实时性;对厂家而言,希望能缩短应用软件的开发周期,减少系统工作的芯片数量,缩减企业的开发成本。本文介绍了嵌入式虚拟化的定义及发展现状,列举了嵌入式虚拟化的多种好处,给出了嵌入式虚拟化的关键技术以及它所面临的问题。虽然国外有此类相对成熟的产品,但国内的同类产品及技术水平还相对落后,因此必需投入更多研究精力。

参考文献:

[1]金海.计算机系统虚拙化:原理与应用[M].北京:清华大学出版社.2008.JIN Hai.Computer System Virtulation: Principle and Application [M].Beijing: Tsinghua University Press.2008.

[2]文军,张思峰,李涛柱.移动互联网技术发展现状及趋势综述[J].通信技术,2014,45(09):977-984.

WEN Jun,ZHANG Si-feng,LI Tao-zhu.Mobile Internet Technology Development Status and Trend Review.[J].Journal of Communications Technology,2014,45(09):977-984.

[3]Heiser G.The Role of Virtualization in Embedded Systems[C].Proceedings of the 1st workshop on Isolation and Integration in Embedded Systems,2008,30(4):11-16.

[4]张超.VMware虚拟化服务器的构建方法与展望[J].通信技术,2010,43(09):88-91.

ZHANG Chao.VMware Virtualization Server Construction Methods and Prospect[J].Journal of Communications Technology,2010,43 (09):88-91.

[5]Masmano M,Ripoll I,Crespo A.Xtratum:a Hypervisor for Safety Critical Embedded Systems[C].Proceedings of 11th Real-Time Linux Workshop,2009,3(1):263-271.

[6]叶常春.嵌入式虚拟化技术[J].计算机工程与科学,2012,34(03):41-45.

YE Chang-chun.Embedded Virtualization Technology [J].Computer Engineering and Science,2012,34(03):41-45.

[7]黄南雁.基于NOVA架构的资源服务平台系统的设计与实现[D].长春:吉林大学,2011.

HUANG Nan-yan.Resource Service Platform based on the NOVA Structure System Design and Implementation [D].Changchun: Jilin University,2011.

[8]Kolchin I,Nikolaev M,Parfenov S.Hardware.Specific Bare—Metal Microhypervisor Prototype[C].Proceedings of 42ndInternational Conference Oil Parallel Processing,2013,35(7):1038-1043.

[9]Y Ming-ji,C Fang-xian,W Xue-jun.Design of FAT32 File System of SD Card in Embedded System[J].Audio Engineering,2010,34(4): 36-39.

[10]江慧琴 ,徐敏.中断管理进程化改善 Linux 实时性能方法研究[J].现代电子技术,2007,30(14):46-47,54.

JIANG Hui-qin,XU Min.Interrupt Management Process,Improve the Linux Real-Time Performance Method Research[J].Journal of Modern Electronic Technology,2007,30(14):46-47,54 .

[11]Park M,C Hong,S Yoo.VIT: A Timer Hypercall to Support Real-Time of Guest Operating Systems[J].Journal of KISS: Computer Systems and Theory,2010,37(1):35-42.

[12]张欢庆,高丽,宋承祥.基于ARM的嵌入式Linux交叉编译环境的研究与实现[J].计算机与数字工程,2012,40(2):151.1532001,15(6): 1076-1084.

ZHANG Huan-qin,GAO Li,SONG Cheng-xiang.Based on ARM Embedded Linux Cross Compile Environment[J].Computer and Digital Engineering,2012,40(2):151.1532001,15(6): 1076-1084.

[13]王景伟.网络攻击技术与网络安全探析[J].通信技术,2010,43(03):41-45.

WANG Jin-wei.Network Attack Technology and Network Security Analysis[J].Journal of Communications Technology,2010,43(03):41-45.

[14]葛勤革.虚拟化:技术、应用与挑战[J].通信技术,2011,44(10):91-93.

GE Qin-ge.Virtualization: Technology,Applications and Challenges[J].Journal of Communications Technology,2011,44(10):91-93.

Embedded Virtualization Technology

WANG Jian1,WANG Yu-song1,HE Wei1,CHEN Zhen2

(1.Chengdu Raycom Mobile Communication Co.,Ltd.,Chengdu Sichuan 610041,China;2.University of Electronic Science and Technology of China,Chengdu Sichuan 610041,China)

Abstract:With the increasingly prominent security requirements in areas such as smart phones,automobile electronics,medical systems,virtualization technology is extended to the embedded system field.The embedded virtualization technology is generally studied,the state-of-the-art of embedded-virtualization reported,and the advantages of embedded virtualization also listed,including the decrease reduction of embedded-system development cost and power consumption,the reduction of product cycle and the raise of safety and reliability.Finally,the problems faced by embedded virtualization and key technologies are presented,including real-time scheduling problem,embedded hardware platform diversity,power management,and the communication across the virtual machines.

Key words:embedded virtualization; real-time scheduling; virtualization manager

doi:10.3969/j.issn.1002-0802.2016.02.024

* 收稿日期:2015-09-06;修回日期:2015-12-09Received date:2015-09-06;Revised date:2015-12-09

基金项目:四川省应用基础项目(No.2013JY0002)

Foundation Item:Application Infrastnccture Project of Sichuan Province(No.2013JY0002)

中图分类号:TP311.1

文献标志码:A

文章编号:1002-0802(2016)02-0247-06

作者简介:

王健(1981—),男,学士,主要研究方向为信息安全、终端安全和密码技术;

王玉松(1976—),男,硕士,主要研究方向为操作系统内核及驱动、虚拟机及嵌入式设备系统;

何伟(1984—),男,学士,主要研究方向为操作系统及应用安全;

陈振(1990—),男,硕士研究生,主要研究方向为移动终端安全技术。