博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

《NewBluePill深入硬件虚拟机》- 新书预览

Posted on 2010-12-08 13:35  Superymk  阅读(1775)  评论(0编辑  收藏  举报

一、 概述

在这一章中,我们先介绍一些贯穿全书的概念,比如Hypervisor,VT-x,VT-d,SVM等等。然后我们会简略介绍下NewBluePill项目背景及其所采用的硬件虚拟化技术。

这一章只是介绍这些技术大致的轮廓,详细内容会在后面各章节中逐一介绍。

虚拟化技术概述

虚拟化的历史

在讨论Hypervisor之前首先谈谈虚拟,虚拟(virtualization)指对计算机资源的抽象,一种常用的定义是“虚拟就是这样的一种技术,它隐藏掉了系统,应用和终端用户赖以交互的计算机资源的物理性的一面,最常做的方法就是把单一的物理资源转化为多个逻辑资源,当然也可以把多个物理资源转化为一个逻辑资源(这在存储设备和服务器上很常见)”

实际上,虚拟技术早在20世纪60年代就已出现,最早由IBM提出,并且应用于计算技术的许多领域,模拟的对象也多种多样,从整台主机到一个组件,其实打印机就可以看成是一直在使用虚拟化技术的,总是有一个打印机守护进程运行在系统中,在操作系统看来,它就是一个虚拟的打印机,任何打印任务都是与它交互,而只有这个进程才知道如何与真正的物理打印机正确通信,并进行正确的打印管理,保证每个job按序完成。

长久以来,用户常见的都是进程虚拟机,也就是作为已有操作系统的一个进程,完全通过软件的手段去模拟硬件,软件再翻译内存地址的方法实现物理机器的模拟,比如较老版本的VMWare, VirtualPC 软件都属于这种。

在2005年和2006年,Intel和AMD都开发出了支持硬件虚拟技术的CPU,也就是在这时,x86平台才真正有可能实现完全虚拟化[1]。在2007年初的时候,Intel还进一步的发布了VT-d技术规范,从而在硬件上支持I/O操作的虚拟化。随着硬件虚拟化技术越来越广泛的采用,开发者也开始虚拟技术来做一些其他的事情:当前HVM已经在虚拟机,安全,加密等领域上有所应用,例如VMware Fusion, Parallels Desktop for Mac, Parallels Workstation 和 DNGuard HVM,随着虚拟化办公和应用的兴起,相信虚拟化技术也会在未来得到不断发展。

硬件虚拟化技术(HEV)

有了虚拟技术的基本概念,下面我们谈谈硬件虚拟化技术。硬件虚拟化技术(Hardware Enabled Virtualization,本书中简称HEV),也就是在硬件层面上,更确切的说是在CPU里(VT-d技术是在主板上北桥芯片支持),对虚拟技术提供直接支持,并通过这种设计提高虚拟效率、降低开发难度。在硬件虚拟化技术诞生前,编写虚拟机过程中,为了实现多个虚拟机上的真实物理地址隔离,需要编程实现把客户机的物理地址翻译为真实机器的物理地址。同时也需要给不同的客户机操作系统编写不同的虚拟设备驱动程序,使之能够共享同一真实硬件资源。硬件虚拟化技术则在硬件上实现了内存地址甚至于I/O设备的映射,因此大大简化了编写虚拟机的过程。而其硬件直接支持二次寻址和I/O映射的特性也提升了虚拟机在运行时的性能。[2]

 

图1.1 硬件虚拟化技术架构示意图

在硬件虚拟化技术中,一个重要的概念就是VMM (Virtual Machine Monitor[3]),它专指在使用硬件虚拟化技术时创建出的特权层,该层提供给虚拟机开发者,用来实现虚拟硬件与真实硬件的通信和一些事件处理操作(如图1.1),因此Hypervisor的权限级别要高于等于操作系统权限。

HEV技术应用模型[S1]

图1.2 Hypervisor使用架构图

前文中已经提过,Hypervisor层的权限要高于等于操作系统的权限。操作系统的内核态已经处在了Ring0特权级上,因此Hypervisor层实际上要运行在一个新的特权级别上,我们称之为“Ring -1”特权级。同时需要新的指令,寄存器以及标志位去实现这个新增特权级的功能。

作为一种最佳实践方案,一般Hypervisor层的实现都是越简单越好。一方面,简单的实现能够尽量降低花在Hypervisor上的开销[4],毕竟大多数这些开销在原先的操作系统上是不存在的。另一方面,复杂的程序实现容易引入程序漏洞,Hypervisor也是如此,且一旦Hypervisor中的漏洞被恶意使用,由于其所处特权级高于操作系统,将使隐藏在其中的病毒、恶意程序很难被查出。


[1] 完全虚拟化(Full Virtualization), 完整虚拟底层硬件,这就使得能运行在该底层硬件上的所有操作系统和它的应用程序,也都能运行在这个虚拟机上。

[2] 一些优化技术也在硬件中被采用,比如专门用于二次寻址的TLB,详细信息可以参考Intel和AMD的手册

[3] 在本书中也称为Hypervisor

[4] 关于Hypervisor的开销问题,后面的章节会有介绍