微软新一代的操作系统Windows 7已成为今年最热门的话题,Windows 7在性能等方面都要比Windows Vista要强,甚至超越Windows XP,其中一个重要的特性就是“XP模式”。在Windows 7上可使用内置的虚拟机安装一个XP系统,用户能随时切换到“XP模式”,可以兼容以前的旧软件。“XP模式”的诞生,得到了广大用户的极大关注。但是,使用“XP模式”是有条件限制的,最重要的条件就是CPU必须支持虚拟化技术(Virtualization Technology,简称VT)。

 

Windows 7的XP模式

◎起源:40年的历史

什么是虚拟化技术呢?在虚拟化技术中,可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上。其实虚拟化技术已有40年的历史,最早使用虚拟化技术的是IBM 7044计算机,它基于麻省理工学院为IBM704计算机开发的分时系统CTSS和曼彻斯特大学的Atlas超级计算机项目。IBM还开发了Model 67的System/360主机,Model 67主机通过虚拟机监视器(VMM, Virtual Machine Monitor)虚拟所有的硬件接口。不过以往的虚拟化技术都是面向服务器系统的,到了2005年,Intel和AMD开始在桌面级CPU中加入对虚拟化技术的支持。其实早期PC的CPU上也有“Virtual 8086”技术,也可以认为是一种虚拟CPU技术,这种V86模式技术是用来兼容早期的8086/8088处理器而设计的,最早出现在386机器上。使用V86模式可以创建好几个并行虚拟8086计算机来运行多个DOS程序。

◎意义:更高的利用率
  为什么要使用虚拟化技术呢?在企业和服务器领域,CPU虚拟化可以带来高的部件及系统级利用率,支持具有透明负载均衡、动态迁移、故障自动隔离、系统自动重构的高可靠服务器应用环境,以及更为简洁、统一的服务器资源分配管理模式。比如,一台中档服务器加上一个虚拟技术平台,常常可以取代6或7台低端服务器,节省的费用不仅仅限于最初的购买费用。从总成本角度来看,算上服务器使用寿命期间的电源、维护和散热费用,节省的费用更多。而且虚拟数据中心还可以大大减少管理费用。此外,资源管理在允许动态分配CPU时间、RAM和网络带宽的虚拟化平台上变得更加简单,可以带来更有效的利用。比如世界上最大的时装零售商Gap公司,通过使用虚拟化技术,用3台安装有Vmware的IBM eServer xSeries440服务器取代了原有的100台服务器。
  

一台物理主机借助VT可运行多个虚拟服务器

对于个人用户和工作站环境中,CPU虚拟化也有极大地用处。想象一下,一个操作系统几乎不需花任何时间就可被启动,即使它崩溃了,也只需简单地将它删除,然后立即安装一个新的。如果你正同时运行几个操作系统,当你准备给其中一个载入新的映像时,你可马上将它关闭,并把该系统正在处理的工作分流给其他系统运行。如果你是一名程序员,需要编写代码使它们在Windows 95/98/Me/2000/XP/Vista上都能运行,而借助虚拟化,你可在1台电脑上运行5种虚拟操作系统。

 

软件级别的虚拟化原理

在桌面级的系统中最早见到的CPU虚拟化都是软件级别的,在2003年,VMware首次在Windows XP平台上运行Linux甚至是Windows Server 2003,还有当时尚未被微软收购的Connectix Virtual PC、开源的VirtualBox等。这里原有操作系统是Host OS(主操作系统),运行在VMware、Virtual PC环境中的操作系统被称作Guest OS(子操作系统)。这些Guest OS有着和普通操作系统完全相同的功能。而且在虚拟机环境中,因此无论你对Guest OS做什么样的改动,都丝毫不会影响到Host OS的稳定性和安全性。在不用Guest OS的时候,更能像删除普通软件那样随意卸载。

 

Ubuntu借助VMware运行在XP中

但纯软件虚拟化解决方案也存在很多问题,对于所有运行在x86处理器的程序来说,x86处理器响应有4个不同优先级,称为Ring 0~Ring3,其中Ring 0的优先级最高,Ring 3最低。Ring 0用于操作系统内核, Ring 1和Ring 2用于操作系统服务,Ring 3用于应用程序。一般来说,操作系统当然是要运行在Ring 0下的,但为了避免Guest OS破坏Host OS,Guest OS必须运行在低于Ring 0的权限上(如Ring 1权限)。问题随之而来,为了让Guest OS实现完整的系统功能,又必须让它发出的线程是Ring 0级的。于是虚拟软件就要不断协调Guest OS和Host OS之线程的优先级,这种转换必然会增加系统的复杂性,会导致软件虚拟技术的性能低下,CPU和内存的处理能力在这样的协调中被大量耗费了,有数据表明其引起的系统性能下降5%~40%。而且其无法直接对硬件进行操作,也限制了软件的功能,比如在软件虚拟系统中无法运行日益普及的64bit操作系统。所以只有对x86 CPU体系进行改进,提供专用的拟化应用指令来实现硬件级的虚拟化支持,才能为用户提供高速、稳定、全面的虚拟化技术支持。

2005年Intel正式公布了Intel VT(Intel Vanderpool Technology)技术,这种技术可以应用于PC和服务器系统,它可以让一台计算机同时运行多个操作系统,通过新的硬件指令,让一个平台能在独立的分区 (partitions) 或 容器 (containers)内执行多个操作系统。软件方面则由虚拟机监视器VMM对虚拟机进行不间断的管理。同年Intel推出的Prescott 核心Pentium 4处理器中的部分型号就已经支持Intel VT技术。当然AMD也有自己的CPU虚拟技术,称为AMD-V(虚拟化技术)。其实无论是Intel还是AMD,他们基于x86 CPU的硬件虚拟技术的本质都大致相同,就是为Guest OS提供专门的执行、切换区域,来避免虚拟系统的频繁协调操作,从而提升稳定性和性能。而且根据平台和发展的不同,CPU虚拟技术也分为数个版本,对应Itanium平台的叫做VT-i,对应x86平台的叫做VT-x。
  下面我们就以Intel的VT技术为例,来看看硬件虚拟技术的执行方法。
  Intel为CPU增加了一种新的VMX(Virtual Machine Extensions)执行模式,VMX给CPU带来了10个新的虚拟专用指令:VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUCH, VMRESUME, VMXOFF and VMXON。在这个模式下,CPU提供一个虚拟机监视器VMM,通过它能够随意控制Guest OS。VMM工作在和Ring 0权限大致相同的VMX Root 模式下,这样就能保证VMM对Guest OS的完整控制和安全性。AMD的处理方式与之类似,只不过AMD把这种执行模式称作VMRUN,把虚拟机监控器称作Hypervisor,VMRUN根模式叫做SVM。

 

VMM的指令调用

支持VT技术后,所有Guest OS都将运行在VMX模式下。此时VMM将对所有的Guest OS的指令进行统一协调管理,Guest OS和Host OS的线程的优先级等各种冲突将得以避免。具体来说,VMM执行VMXON指令调入VMM软件,VMM软件使用VMLAUNCH指令来进入每一个虚拟机,使用VMRESUME指令来退出。而且各个VMX模式切换也极为方便,每个Guest OS会有4KB的VMCS状态存储区,这个区域用来存储Guest OS状态,所以多个不同的Guest OS能够被高效地同时执行,而且同时能够被快速的切换。而对于AMD的产品来说,由于CPU内部整合了内存控制器,因此在SVM模式下,VMM还有着相应的内存访问控制机制,更能进一步提升了Guest OS的运行性能。

而且随着技术的进步,虚拟化技术在进一步发展,最新的Intel VT-d技术是一种基于北桥芯片(或者叫MCH)的硬件辅助虚拟化技术,通过在北桥中内置提供DMA虚拟化和IRQ虚拟化硬件,实现了包括硬件缓冲、地址翻译等的I/O虚拟化。Intel VT-d能够在虚拟环境中大大地提升 I/O 的可靠性、灵活性与性能。另外,虚拟化技术是一套解决方案,需要CPU、主板芯片组、BIOS和软件的配套支持。据测试,在开启VT技术后,虚拟机软件的内存和磁盘性能可以得到极大地提升,尤其在VMware下提升更为明显。在64bit主机操作系统下,打开VT还可以获得更好的CPU性能。而且只有在开启VT后,才能够在32bit操作系统中虚拟出64bit操作系统。

虽然CPU虚拟化的概念和实施最早来源于大型服务器主机,但随着以Intel和VMware、微软等为代表的软硬件厂商将虚拟化技术引入x86平台,一个崭新的时代即将到来。著名的市场调研和分析机构Gartner认为在未来十年内,虚拟化将是PC行业所面临的最具革命性的一种技术。从2003年起,各个虚拟化厂商就在逐步发力:EMC公司以6.25亿美金收购VMware;SWsoft公司进入中国,成立中国公司;微软免费提供Virtual Server;VMware免费提供VMware Server;Xen与诸多操作系统集成;Intel和AMD公司纷纷推出集成虚拟化功能的微处理器,太多的实事证明了,虚拟化的步伐正在逐步加快。仅VMware一家公司的收入就能达到了近9亿美元,有超过400万的用户和2.6万家不同类型和规模的企业客户。虚拟化市场的巨大,可见一斑,而Windows7的XP模式只是向我们揭示了CPU虚拟化的美妙一角。

  目前Intel众多CPU均不支持XP模式需要的VT技术,包括Pentium E5200、Core 2 Duo E7400、Core 2 Quad Q8200等。换句话说,现在不少主流的Intel平台与Windows 7的“XP模式”无缘。相比Intel,AMD也已经发布了支持AMD Virtualization Technology虚拟化技术的一系列处理器产品,并且绝大多数的AMD主流处理器都支持,只有Sempron系列不支持VT技术。

     (注:资源来源于网络)http://pszsg.blog.163.com/blog/static/327737020101099541173/