MCPLive > 杂志文章 > x86硬件辅助虚拟化技术解析

x86硬件辅助虚拟化技术解析

2010-05-13HJCBUG《微型计算机》2010年4月下

理清虚拟机和虚拟机监视器的类别

大家在谈到虚拟机时可能会有不同的看法:编程的朋友肯定对JVM不会陌生,JVM本身就是一种虚拟机;而喜欢系统虚拟软件的朋友则对VMware、Xen和微软这些虚拟化厂家的虚拟化产品有着更实际的理解。大家只知道它们是不同类别的虚拟机,但是它们之间是如何分类的呢?哪种虚拟机与Intel VT和AMD-V的关联性大呢?

两类不同的虚拟机

根据笔者的理解,虚拟机可以分为进程虚拟机和系统虚拟机两大类,进程虚拟机支持ABI——用户指令加上系统调用;系统虚拟机则支持完整的ISA——包括用户指令和系统指令。在这个分类方法中,又可以根据客户机和本地机(Host Machine,在虚拟化资料中也常常称其为宿主机)是否使用了相同的ISA进行次级细分。


虚拟机大致可分为两大类,并可进一步细分

为了简化讲解,我们只考虑和硬件虚拟化关系为密切的、在相同ISA情况下的系统虚拟机(右图中黑框圈选的地方,因为大部分读者接触不到不同ISA指令集转换的情况)分类情况。前面我们提到的VMware、Xen的虚拟软件产品都属于系统虚拟机类别,而Intel VT和AMD-V等x86硬件辅助虚拟化技术能够提升系统虚拟机的执行性能。

三种虚拟机监视器(VMM)

大家谈到虚拟化时常用的一个词就是VMM(也称作Hypervisor,虚拟机监控器,基本上大家可以认为就是前文讲到的那个虚拟化层,抽象层的替代品),在系统虚拟机中虚拟软件常常被称为VMM,VMM在虚拟机中可以算是为关键的组件,对于系统虚拟机的分类就是对虚拟机监视器(VMM)的分类。VMM一般有三种类型,分别是独立(Type-1)、宿主(Type-2)和混合(Hybrid)类型。不论是哪一种系统虚拟机模型,只要它能够提供对Intel VT和AMD-V的支持,都可以在一定程度上减少虚拟化软件带来的性能开销(早期的RISC硬件辅助虚拟化除外)。


虚拟软件把一个硬件平台上的ISA翻译成另一个,以构成系统虚拟机。

Type-1型VMM直接安装在物理机器上,运行在高特权模式下,而客户机系统则运行在特权较少的模式上。这种虚拟机在很多方面都是很高效的,但明显的缺点是要考虑的方面较多(比如各种驱动程序),所以设计比较复杂,VMware的ESX server就属于这种类型。

Type-2型VMM类似于在操作系统上安装的应用程序,VMM可以依赖主机操作系统提供设备驱动和其它底层服务,因此不需要考虑大量的设备驱动问题,VMM体积较小。大家常用的VMware Workstation和JVM都属于此类型,这种虚拟机的缺点是会损失一些效率,因为当请求操作系统服务时要通过更多的软件层次,来回的次数也更多。

混合型是Type-1和Type-2的结合体,在这个类型中VMM和主机操作系统处于平行关系,微软的Virtual Server 2005R2以及近非常受大家关注的Xen就是混合型的典范。

小知识:ISA和ABI

ISA是Instruction Set Architecture的简写,译为指令集体系结构。在这个结构中有两个部分是和虚拟机密切相关的,一个是用户指令集(User ISA),另一个是系统指令集(Syetem ISA)。

用户指令集是应用程序可直接调用的,而系统指令集则是操作系统才能看到的,负责管理硬件资源。ABI是Application Binary Interface的简写,译为应用二进制接口。它包括两个主要组件,一个是用户指令集,另一个则是系统调用接口(System Calls)。

分享到:

用户评论

用户名:

密码: