Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135253
  • 博文数量: 38
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 376
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-07 22:44
文章分类
文章存档

2010年(38)

我的朋友

分类:

2010-12-19 21:32:31

近年来,虚拟机技术已经逐渐成为人们关注的热点,正受到越来越多的关注和重视,如VMware 已经被80%以上的全球百强企业所采纳。随着多年来研究的深入,虚拟机技术已经在企业计算、灾难恢复、分布式计算和系统安全领域得到了广泛应用。

现在对虚拟机技术有很多种分类方式,本文认为虚拟机的本质特征是利用下次应用(或系统)的支持为上层应用(或系统)提供不同的接口,因此按照接口来分类应该更能反映虚拟机的特点。按照虚拟机系统对上层应用所提供接口的不同(如图1所示),形成了不同层次的虚拟机技术,主要包括硬件抽象层虚拟机、操作系统层虚拟机、API(应用程序编程接口,Application Programming Interface)层虚拟机,以及编程语言层虚拟机等四类。


                                                                          图1 层次化的虚拟机分类

硬件抽象层的虚拟机。对上层软件(即客户操作系统)而言,硬件抽象层的虚拟机构造了一个完整的计算机硬件系统,这种虚拟机与客户操作系统的接口即为处理器指令。

操作系统层的虚拟机。通过在动态复制操作系统环境,此类虚拟机能够创建多个虚拟运行容器。而对运行在每个容器之上的软件而言,此类虚拟机均提供了一个完整的操作系统运行环境,而它与上层软件的接口即为系统调用接口。

API层的虚拟机。此类虚拟机为上层应用软件提供了特定操作系统运行环境的模拟,但这种模拟并不是对处理器指令的仿真,而是模拟实现该操作系统的各类用户态API。

编程语言层虚拟机。此类虚拟机通过解释或即时编译技术(Just-In-Time,JIT)来运行语言虚拟机指令,从而实现软件的跨平台特性。
 
 

硬件抽象层的虚拟机技术

早在上世纪70 年代,IBM System 360370CP-40CP-67[1-4]等系统就已经实现了硬件抽象层的虚拟机技术,它最初是为了弥补系统架构上的不足而发展起来的,而随着技术的发展和对虚拟机需求的增加,硬件抽象层虚拟机在强隔离功能和安全控制方面得到了长足发展和广泛应用。

如前所述,运行在硬件抽象层虚拟机之上的软件即为客户操作系统,硬件抽象层的虚拟机技术利用客户系统环境和虚拟机宿主平台的相似性来减少执行客户系统指令的延迟。目前,大多数的商业服务器虚拟化产品,都是通过使用这种技术来实现高效、实用的虚拟化系统。这种技术利用虚拟机监视器(Virtual Machine MonitorVMM)作为隔离代码运行环境的中间层。

这类虚拟机通过VMM 提供了一个物理机器的抽象,它允许操作系统假设自身可以直接在硬件上运行,VMM为其上运行的客户操作系统提供硬件映射。从操作系统的角度看,运行在虚拟机上与运行在其对应的物理计算机系统上一样。

 

Type I VMMType II VMM体系结构

按照Goldberg的定义[5],虚拟机监视器是能够为计算机系统创建高效、隔离的副本的软件。这些副本即为虚拟机(Virtual MachineVM),在虚拟机内虚拟处理器的指令集的一个子集能够直接在物理处理器上执行。根据VMM 在整个物理系统中的实现位置和实现方法的不同,Goldberg定义了两种虚拟机监视器模型,即Type I VMMType 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 ServerVMware WorkstationMicrosoftVirtual Server系列产品。基于动态指令转换的完全虚拟化技术通过在运行时动态执行指令扫描以发现特权指令,然后依据VMM状态执行指令转换,使得特权指令的执行跳转到等价模拟代码段处,从而实现与自陷相同的目标。

管理员在2009年8月13日编辑了该文章文章。

-->
阅读(1232) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~