第2章 硬件虚拟机技术简介
2010-11-29 09:20
232 查看
1.1
硬件虚拟机概述
早在上世纪70
年代,
IBM
就实现了硬件抽象层的虚拟机技术,例如
System 360
、
370
、
CP-40
、
CP-67
。它最初是为了弥补系统架构上的不足而发展起来的。后来,随着虚拟机技术的成熟,对虚拟机需求的不断增加以及硬件性能的逐步提高,硬件抽象层虚拟机在强隔离功能和安全控制方面的优点使它得到了人们的青睐而得以被推广开来
[6]
。
目
前的硬件虚拟机一般都是利用虚拟机监视器作为隔离代码运行环境的中间层。虚拟机监控器的功能是为其上运行的客户操作系统提供硬件映射。从操作系统的角度
看,运行在虚拟机上与运行在其对应的物理计算机系统上是一样的。虚拟机监视器是能够为计算机系统创建高效、隔离的副本的软件。这些副本即为虚拟机。
对
硬件虚拟机来说,平台复制是虚拟机监控器的重要功能,而关键问题是在多个客户操作系统之间分配唯一的底层硬件资源。虚拟机监控器管理着硬件资源,所有的客
户操作系统及其上的应用程序都需要经过虚拟机监控器的控制。当执行某些指令,特别是涉及到共享硬件资源的指令,会通过虚拟机监控器解释这些指令,检查指令
的正确性并执行相关操作,客户软件不会感觉到虚拟机监控器的操作。
目前,学术界针对硬件虚拟机的划分方法主要有两种
[6]
:
a)
一种是按照虚拟机监控器在计算机中所处的抽象层的位置划分;
b)
一种是按照虚拟机监控器的实现方式划分;
1.1.1
按照虚拟机监控器所处的位置分类
按照虚拟机监控器在计算机系统中所处的抽象层位置来划分,可以分为两种:a)
一种是虚拟机监控器直接运行在硬件之上;
b)
一种是虚拟机监控器运行在操作系统之上;
1.1.1.1
运行在硬件之上的虚拟机监控器
直接运行在硬件之上的虚拟机监控器
,可以获取访问硬件的最高权限。因此,虚拟机
监控器
可以直接获取并且执行客户操作系统中包括特权级指令在内的所有指令。如图
2.1[6]
所示:
图
2
.
1
基于硬件的虚拟机
这种架构的优点是:
a)
虚拟机监控器以几乎相同的方式支持所有的客户操作系统;
而缺点是:
a)
至少对于个人计算机的用户来说,安装虚拟机监控器之前必须完全擦除现有的系统,并且在安装虚拟机监控器之后安装客户操作系统,这给用户带来了极大的不便;
b)
需要为虚拟机监控器的输入输出设备编写驱动程序,因为虚拟机监控器直接和输入输出设备交互;
1.1.1.2
运行在操作系统之上的虚拟机监控器
另外一种方法是虚拟机监控器放在已存在的宿主操作系统之上,这个虚拟机监控器也被称为宿主虚拟机,如图2.2[6]
所示。
这样做的优点是:
a)
安装虚拟机监控器的过程就类似于安装一个典型的应用程序的过程;
b)
虚拟软件能够利用宿主操作系统提供设备驱动和其他基本服务;
缺点则是:
a)
会带来一些性能的损失,因为操作系统的服务要通过更多的软件层次来实现;
宿主虚拟机方式被使用在
VMware
的实现中,它是一个现代的硬件虚拟机,运行于
IA-32
硬件平台之上。
图
2
.
2
基于操作系统的虚拟机
1.1.2
按照虚拟机监控器的实现方式分类
按照虚拟机监控器的实现方式分类,可以分为:a)
全虚拟化;
b)
半虚拟化;
1.1.2.1
全虚拟化
虚拟机监控器模拟完整的硬件,使一个未修改的操作系统可以在各种完全不同的微处理器上运行。例如Bochs
等。
全
虚拟化的实现方法包括直接指令解释和二进制翻译。全虚拟化最直接的实现方法是直接指令解释。但是直接指令解释,对于客户操作系统的性能损失极其严重。二进
制翻译是指把一段二进制指令转换成一段具有同等功能的目标指令。翻译过程本身可能会有相当大的开销,但是如果一段源指令被翻译后的目标指令能够被缓存下
来,以后重复执行该段源指令就会比直接解释执行快得多。因此,对于频繁执行的指令,或者关键指令,可以通过采用二进制翻译的方法来提高虚拟机的性能
(
例如
QEMU[7]
)
。
目前,市场上许多商业的硬件虚拟机采用了基于动态指令转换的完全虚拟化技术,例如
EMC
公司的
VMware ESX Server
、
VMware Workstation
和
Microsoft
的
Virtual Server
系列产品。由于完全虚拟化不需要修改客户操作系统,因此具有很好的兼容性,而完全虚拟化技术的性能也主要依赖于动态指令转换引擎的设计和实现。
1.1.2.2
半虚拟化
效率最高的虚拟化方法是半虚拟化(paravirtualization
)。在半虚拟化中,子操作系统使用一个专门的
API
(半虚拟化接口)与虚拟机监控器通信,虚拟机监控器则负责处理虚拟化请求,并将这些请求递交到硬件上。由于有了这个特殊的
API
,虚拟机监控器不需去做耗费资源的指令翻译工作。而且,使用半虚拟化
API
时,虚拟操作系统能够发出更有效的指令
(
例如
Lguest[8]
)
。然而,半虚拟化也有一个缺点,就是需要修改包含这个特殊
API
的操作系统。而且,这个缺点对于某些操作系统(主要是
Windows
)来说更要命,因为它们没有这种
API[6]
。
现
在,半虚拟化是获得最佳性能的方法,因为虚拟操作系统发出的指令不需要翻译。遗憾的是,在某些操作系统中不能完全使用半虚拟化,因为它需要一个特殊版本的
操作系统。在这样环境下,为了确保高性能,可以半虚拟化个别的设备。这意味着,可以通过硬件虚拟化来处理某些指令(如,
CPU
发出的指令)。不过,有些特殊设备发出的指令(如,
network board
或
graphical interface card
)在离开虚拟机之前可以通过准虚拟化驱动被修改。有些厂商提供专门操作系统的准虚拟化驱动包,这些驱动包经常可以单独购买。通常,这些专门的驱动包都物有所值,能够大大地提高设备性能,如网板(
network board
)和硬盘
[6]
。
1.1.2.3
硬件辅助虚拟化
硬件辅助虚拟化结合全虚拟化和半虚拟化的优点,Intel
和
AMD
提出了通过修改
x86 CPU
指令的语义使其直接支持虚拟化的方案。英特尔公司推出了
VT-i(
支持
Ltanium
架构
) VT-x
(支持
X86
架构)引入新的处理器操作,称为
VMX(Virtual Machine
Extensions)
来支持虚拟化。
AMD
推出了新的处理器模式和新的内存管理模式支持虚拟化技术。目前最新版的
Xen
,
VMware Workstation
等,都已经支持
Intel-VT
和
AMD-V
技术。
1.2
本章小结
硬件虚拟机划分一般按照虚拟机监控器在计算机中所处的位置或者虚拟机监控器的实现方法来划分。按照虚拟机监控器在计算机抽象层中所处的位置来分,可以分为:
a)
运行在硬件之上的虚拟机监控器;
b)
运行在操作系统之上的虚拟机监控器;
按照虚拟机监控器的实现方法,可以分为:
a)
全虚拟化;
b)
半虚拟化;
硬件辅助虚拟化;
相关文章推荐
- 第2章 硬件虚拟机技术简介
- 转:虚拟机技术简介之一 ― 虚拟机的分类
- 虚拟机技术简介之一 — 虚拟机的分类
- 虚拟化相关概念与技术整理(2)——硬件辅助虚拟化简介
- 虚拟机硬件——英特尔的VT-x、VT-d、VT-c技术概述
- Atitit 持久化 之道 attilax 艾龙著 1. 第2章 Java对象持久化技术概述 2 1.1. 2.1 直接通过JDBC API来持久化实体域对象 2 1.2. 2.2 ORM简介 2
- 虚拟机技术简介之二 — 硬件抽象层的虚拟机技术
- vSphere 技术能力:虚拟机和虚拟机硬件
- 虚拟机技术综述-2 硬件虚拟机
- 虚拟机技术简介之四 — API层虚拟机
- 第2章 爬虫简介以及爬虫的技术价值...
- 虚拟机技术简介之三 — 操作系统层虚拟机技术
- 翻译:WebAssembly简介:我们为什么要关心这个技术?
- 网站测试技术简介 (转)
- QEMU模拟器/虚拟机简介
- All-In-One Code Framework: 微软一站式开发技术框架 2009-9-17 新增代码示例简介
- 虚拟机 网络模式简介 及桥接模式设置
- Google 的开源技术protobuf 简介与例子
- HESSIAN的技术实现简介
- 虚拟化和虚拟机简介