Hypervisor也被称作虚拟机监控器(VMM,Virtual Machine Monitor),它是一个基于计算机硬件平台的软件(可以是系统软件也可以是应用软件),允许多个操作系统在一个硬件平台上并行运行。Hypervisor系统被分为两类:I型和II型[1]。
在I型中,Hypervisor作为系统软件直接运行于主机硬件之上,可以直接控制物理设备和管理客户操作系统(Guest OS:所有运行在Hypervisor上的操作系统),通过接口为客户操作系统提供服务,类I具有很好的性能保障。属于I型的典型Hypervisor包含CM/CMS,VirtualLogix的VLX, TRANGO, IBM的POWER Hypervisor (PowerVM), IBM的PR/SM, Microsoft的Hyper-V等。II型Hypervisor做为一个应用软件运行于普通操作系统之上。II型Hypervisor作为一个的软件应用层,而客户操作系统运行于硬件以上第三层(普通操作系统->Hypervisor->客户操作系统)。由于软件层次复杂,从而导致II型Hypervisor支持的客户操作系统性能较低。属于II型的Hypervisor有VMware Server (即GSX), VMware Workstation, Sun的VirtualBox, 以及开源虚拟机软件QEMU等。
Hypervisor的概念最早由IBM在三十多年前提出。当时,IBM使用Hypervisor目的是为了保证IBM旧的操作系统可以运行在新的硬件平台上,以及加速操作系统的开发和测试。虽然Hypervisor使用给软件或硬件的开发、测试、系统健壮性等方面带来很多优点,但是Hypervisor技术的使用始终没有与大型主机的应用环境脱离。直到1999年,VMware在个人计算机上成功的演示了VMware Workstation,并获得理想性能,Hypervisor技术开始在个人桌面领域应用和推广[2]。从此,个人桌面领域的Hypervisor主要由VMware+WINDOWS占领。
近年来,一些新型的个人桌面Hypervisor系统开始陆续出现。2003年,Xen Hypervisor系统开始正式公开发布,当前Xen的发布已经被包含在FreeBSD、Linux、NetBSD、以及Plan 9等多种操作系统中。另外,基于OpenSolaris操作系统重新实现的Xen被称作Sun xVM Server也已经发布[3]。2005年,Parallels公司发布了Parallels Workstation,它是基于MAC OS X个人计算机的Hypervisor系统[4]。2008年六月,微软发布了I型Hypervisor Hyper-V,从Windows Vista开始的新版本的微软操作系统运行在Hyper-V上有较好性能[5]。另外,基于Linux的KVM(for Kernel-based Virtual Machine)以及QEMU也是当前开源领域比较流行的Hypervisor。尤其是KVM,已经被Linux内核所接受,QEMU作为虚拟机运行在KVM构建的Hypervisor环境中[5,6,7,8]。
软件架构是区别I型和II型Hypervisor系统的决定因素,而Hypervisor技术则是影响Hypervisor系统性能和推动Hypervisor应用的关键原因。Hypervisor技术可以从软件或硬件的角度被区别为软件虚拟化技术和硬件虚拟化技术。
硬件虚拟化技术的采用在于硬件平台的设计上,因此,硬件平台特点是制约Hypervisor技术使用的重要因素。Hypervisor技术在大型服务器系统较早使用的因素就在于系统性能高,具有特殊的支持虚拟技术的硬件模块和指令集。例如在X86环境中,虽然X86平台拥有众多的个人计算机用户,但是由于系统本身的设计性质,缺乏针对虚拟化技术的支持功能,从而导致Hypervisor在x86平台上应用较晚。伴随着市场对Hypervisor系统的重视,X86供应商开始在其设备中添加了硬件虚拟辅助部件。例如Intel 发布的Intel VT[9]以及AMD的AMD-V[10]等。这些扩展主要是通过提供特殊的功能以解决X86平台上建立Hypervisor存在复杂度高、性能低的问题。
为了满足Hypervisor系统对客户操作系统的支持,Hypervisor主要采用两种软件虚拟化技术:全虚拟化(Full-Virtualization)和准虚拟化(Paravirtualization) [11,12,13]。全虚拟化一般是通过软件对所有的硬件进行模拟,构建虚拟设备,从而可以保证客户操作系统不用修改就可以直接在相应虚拟机平台上面运行。II型Hypervisor通常采用全虚拟化技术。准虚拟化(Paravirtualization)也被称为泛虚拟化、半虚拟化,该词的使用最早源于Denali Hypervisor系统的相关文章中[14]。采用准虚拟化技术,Hypervisor不需要模拟所有的硬件设备,为了提高Hypervisor环境的性能,系统通过实现针对Hypervisor的系统调用来执行服务请求,直接访问物理设备,例如I/O访问,而不是通过虚拟设备间接的访问物理设备。这种技术在Xen中被叫做准虚拟化技术,Parallels Workstation中称为Hypercall,而IBM发布的VM系统中,被叫做“DIAGNOSE code”。基于该类技术的Hypervisor可以保障运行于其上的客户操作系统能够获取接近于直接运行于硬件上的系统性能,但是运行于该类Hypervisor的客户操作系统必须经过移植修改。I型Hypervisor通常采用这种技术。当前,准虚拟化技术被广泛应用于Hypervisor中。
在Hypervisor系统的设计中,并不是每一个Hypervisor只能采用一种虚拟化策略,有些可能兼具二者,例如Xen。Xen是一个纯软件的Hypervisor,它依赖于一个通用操作系统,例如Linux,通过硬件提供的虚拟扩展附件,Xen可以支持准虚拟化和全虚拟化技术。
如前所述,诸如XEN、VMware、KVM、Hyper-V、VMware等Hypervisor系统几乎都应用于大型主机服务器或个人桌面计算机市场,而针对嵌入式领域的Hypervisor系统或研究还相当薄弱。嵌入式领域中,为了降低系统的开发周期和成本,越来越多的开发商期望可以直接使用通用操作系统的应用软件,因此,研究人员开始将通用操作系统向嵌入式系统领域移植。另外,嵌入式系统通常被用于实时应用环境中,但是通用操作系统通常并不具有实时功能,为此,研究人员不得不在移植过程中改善通用操作系统的实时功能,但是由此带来的工作量和技术难度相当惊人,实时性能还不好。
为此,伴随着硬件平台性能的提升,Hypervisor系统被引入到嵌入式系统中。通过构建Hypervisor,可以保证通用操作系统和实时操作系统的并行运行,从而使嵌入式系统即能提供应用程序的通用操作系统接口,例如Linux、Windows,又能支持的实时操作系统(RTOS:Real-Time Operating Systems)的APIs(Application Program Interface)。除了具有支持多种应用软件以外,采用Hypervisor系统还可以保证整个嵌入式系统的可靠性、稳定性、有效性等。嵌入式系统一般资源稀少、性能较低,因此,Hypervisor系统在嵌入式领域中的应用问题就是性能的问题,尤其是在实时环境中,性能问题更为重要。由Hypervisor在其它行业的应用经验可以清晰的认识到,基于准虚拟化技术的I型Hypervisor具有明显的性能优势,因此,构建I型Hypervisor是嵌入式系统的不二选择。
创建有效的嵌入式实时Hypervisor系统,主要是针对问题开展研究。性能是Hypervisor解决的首要问题,如上所述,该问题可以通过建立基于准虚拟化的I型Hypervisor系统解决。另外,Hypervisor还有解决一定的功能问题,即满足嵌入式软件程序的需求,嵌入式Hypervisor必须提供对多种操作系统应用软件的支持,提供相应的函数接口,支持实时任务和非实时任务的同台并行运行和计算。此外,嵌入式实时Hypervisor还应该解决系统的整体可靠性问题,保证运行于客户操作系统上层的实时应用软件具有确定性、可预测性。
现在,已经有一些组织和研究机构从解决嵌入式系统中Hypervisor的主要问题着手,设计和构建不同的嵌入式Hypervisor系统。为了解决Hypervisor系统的性能和可靠性,通过将微内核或小型内核与虚拟技术的进行结合构建高性能的Hypervisor,例如OKL4(微内核)[16]与LynxSecure(小型分离内核)系统[17]。OKL4是早的嵌入式商用Hypervisor,它于2005年在移动电话设备中发布。OKL4和LynxSecure都是开源软件。近两年来,伴随着开源嵌入式Hypervisor系统的发布,商用嵌入式Hypervisor系统开始相继发布,LynuxWorks于2007发布LynxSecure,2009年二月发布最新的LynxSecure 2.0版本。Green Hill于2007年2月发布基于INTEGRITY RTOS的Padded Cell hypervisor,Padded Cell是一套提供嵌入式和企业领域应用高安全Hypervisor系统,当前已经支持Windows XP[18]。2007年7月,Trango发布TRANGO Hypervisor,并且与2008年9月低获得CSPN(Certification de Sécurité de Premier Niveau - First Level Security Certification)安全认证[19]。
文章相关研究是基于XtratuM Hypervisor系统。XtratuM系统是由西班牙瓦伦西亚理工大学工业信息和实时系统研究组和兰州大学DSLab实验室共同开发的基于Linux的嵌入式实时虚拟机管理器。2005年,XtratuM 0.1版本在GPL协议下发布,当前XtratuM的最高版本是XtratuM 2.1.0,已经支持x86、PowerPC、MIPS、LEN2等多种处理器[20]。XtratuM系统采用超微内核(nano-kernel)技术与虚拟化技术相结合的设计模式。与微内核技术相比,超微内核要求内核更小,更简单。在XtratuM系统中,Hypervisor内核仅仅负责中断、时钟等硬件资源的管理,以及提供基于优先级的虚拟机实时调度器。在XtratuM Hypervisor系统中,客户操作系统通过Hypercalls访问底层硬件。XtratuM Hypervisor的目标就是精小、安全、可靠、高效、稳定。