分类:
2010-12-19 21:32:31
早在上世纪70 年代,IBM System 360、370、CP-40、CP-67[1-4]等系统就已经实现了硬件抽象层的虚拟机技术,它最初是为了弥补系统架构上的不足而发展起来的,而随着技术的发展和对虚拟机需求的增加,硬件抽象层虚拟机在强隔离功能和安全控制方面得到了长足发展和广泛应用。
如前所述,运行在硬件抽象层虚拟机之上的软件即为客户操作系统,硬件抽象层的虚拟机技术利用客户系统环境和虚拟机宿主平台的相似性来减少执行客户系统指令的延迟。目前,大多数的商业服务器虚拟化产品,都是通过使用这种技术来实现高效、实用的虚拟化系统。这种技术利用虚拟机监视器(Virtual Machine Monitor,VMM)作为隔离代码运行环境的中间层。
这类虚拟机通过VMM 提供了一个物理机器的抽象,它允许操作系统假设自身可以直接在硬件上运行,VMM为其上运行的客户操作系统提供硬件映射。从操作系统的角度看,运行在虚拟机上与运行在其对应的物理计算机系统上一样。
Type I VMM与Type II VMM体系结构
按照Goldberg的定义[5],虚拟机监视器是能够为计算机系统创建高效、隔离的副本的软件。这些副本即为虚拟机(Virtual Machine,VM),在虚拟机内虚拟处理器的指令集的一个子集能够直接在物理处理器上执行。根据VMM 在整个物理系统中的实现位置和实现方法的不同,Goldberg定义了两种虚拟机监视器模型,即Type I VMM和Type II VMM,具体结构如图1所示。Type I VMM 在操作系统之前预先安装,然后在此虚拟机监视器之上安装客户操作系统,它可以在硬件支持下拥有最佳性能,如IBM VM/370[1-3],VMware ESX Server[6],Xen[7-9],Denali[10-12]等均属于这样的虚拟机。Type I VMM通常都是以一个轻量级操作系统的形式实现。Type II VMM 则是安装在已有的主机操作系统(宿主操作系统)之上,此类虚拟机监视器通过宿主主操作系统来管理和访问各类资源(如文件和各类I/O设备等),如VMware Workstation[13]、Parallel Workstation[14]等。
从实现的角度,VMM实现从虚拟资源到物理资源的映射,并利用本地物理计算机系统进行实际计算。当客户操作系统通过特权指令访问关键系统资源时,VMM将接管其请求,并进行相应的模拟处理。为了使这种机制能够有效地工作,每条特权指令的执行都需要产生自陷(Trap)以便VMM能够捕获该指令,从而使得VMM能够进行相应的指令模拟执行。VMM通过模拟特权指令的执行,并返回处理结果给指定的客户虚拟系统的方式,实现了不同虚拟机的运行上下文保护与切换,从而能够虚拟出多个硬件系统,保证了各个客户虚拟系统的有效隔离。
然而,Intel x86体系结构的处理器并不是完全支持虚拟化的[15],因为某些x86特权指令在低特权级上下文执行执行时,不能产生自陷,导致VMM无法直接捕获特权指令的执行。
目前,针对这一问题的解决方案主要有三种:基于动态指令转换(Dynamic Instruction Translation)的完全虚拟化(Full-virtualization)技术,半虚拟化(Para-virtualization)技术和硬件辅助(Hardware Assisted)技术。
许多商业的虚拟化产品都采用了基于动态指令转换的完全虚拟化技术,例如EMC公司的VMwareESX Server、VMware Workstation和Microsoft的Virtual Server系列产品。基于动态指令转换的完全虚拟化技术通过在运行时动态执行指令扫描以发现特权指令,然后依据VMM状态执行指令转换,使得特权指令的执行跳转到等价模拟代码段处,从而实现与自陷相同的目标。
管理员在2009年8月13日编辑了该文章文章。