微软新一代的操作系统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/

转载于:https://blog.51cto.com/geraint/593581

CPU虚拟化技术解析相关推荐

  1. 计算机处理io和cpu,虚拟化技术原理(CPU、内存、IO)

    虚拟化 云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一. 云计算的云端系统, 其实质上就是一个大型的分布式系统. 虚拟化通过在一个物理平台上虚拟出更多的虚拟平台, 而其中 ...

  2. 虚拟化学习笔记四——硬件辅助CPU虚拟化技术VT-x

    系统虚拟化的核心任务是CPU虚拟化,本篇博客主要介绍kvm中采用的cpu虚拟化技术. 硬件辅助CPU虚拟化技术--VT-x Intel VT中的VT-x(Intel Virtualization te ...

  3. 什么是CPU的虚拟化技术?优势又是什么

    cpu的虚拟化技术: CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率: 虚拟化技术与 ...

  4. 宏碁电脑开启虚拟化技术_开启windows电脑的cpu虚拟化(VT)图文操作步骤

    大家在电脑上用安卓模拟器的时候会发现,如果我们开启电脑cpu的虚拟化,安卓模拟器的性能可以成倍增加.其实所谓的CPU虚拟化技术就是指单CPU模拟多CPU运行,让一个平台同时运行多个操作系统,并且应用程 ...

  5. amd插帧技术如何开启_联想ThinkPad笔记本电脑如何开启CPU的虚拟化技术图文教程...

    联想ThinkPad笔记本电脑如何开启CPU的虚拟化技术图文教程 很多情况下可能我们都需要开启CPU虚拟化技术,例如我们需要打开安卓模拟器,在打开安卓模拟器的时候如果提示您需要CPU虚拟化技术,那么我 ...

  6. 计算机虚拟技术有什么用途,CPU虚拟化有什么作用?CPU怎么开启虚拟化技术?

    目前Intel和AMD的主流CPU都支持虚拟化技术,而搭配的主板BIOS中都自带了开启虚拟化技术的功能,但是主板出厂时默认禁用虚拟化技术的,如果我们如果需要使用CPU虚拟化技术,那么需要在主板中开启, ...

  7. CPU硬件辅助虚拟化技术

    目前主要有Intel的VT-x和AMD的AMD-V这两种技术.其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest O ...

  8. 虚拟化技术 — 硬件辅助的虚拟化技术

    目录 文章目录 目录 硬件辅助的虚拟化技术概览 CPU 虚拟化技术 基于二进制翻译的全虚拟化技术(Full-Virtualization) 需要改造 GuestOS 的半虚拟化技术(Para-Virt ...

  9. 【重识云原生】第二章计算第一节——计算虚拟化技术总述

    云平台计算领域知识地图: ​ 楔子:计算虚拟化技术算是云计算技术的擎天之柱,其前两代技术的演进一直引领着云计算的发展,即便到了云原生时代,其作用依然举足轻重. 一.计算虚拟化技术总述 1.1 虚拟化技 ...

  10. 云计算入门+虚拟化技术

    文章目录 前言 一.概念 1.万物互联下的云计算时代 2.需求的诞生 3.云计算关键特征 4.部署模式 5.商业模式 6.思维的变化 7.云下黑科技 8.国内的云服务提供商 二.虚拟化技术 1.什么是 ...

最新文章

  1. animation动画不生效_关于CSS3的animation使用的一些坑,需要注意下!
  2. Java并发编程基础--ThreadLocal
  3. 从零开始掌握Python机器学习(附资源)
  4. 在ROS中开始自主机器人仿真 - 2 让turtlebot跑起来
  5. OpenCV使用inRange的阈值操作Thresholding Operations
  6. python监控桌面捕捉_想要远程获取对方的桌面?Python教你一招搞定!
  7. matlab 判断元素索引_MATLAB图像处理:08:在交通视频中检测汽车
  8. [POJ1743]Musical Theme
  9. MATLAB 画图 字符串连接表示 plot参数
  10. java div2_系统学习 javaweb2----HTML语言2
  11. 纪念一下我这尴尬中二的排名吧
  12. 适配器模式之门面模式
  13. python 怎么算l2范数_“火车过桥”“火车会车”和“火车超车”问题怎么解?图形很直观...
  14. MSDN下载Windows7系统与安装
  15. c# timer 销毁_C# System.Timers.Timer定时器的使用和定时自动清理内存应用
  16. Ubuntu 配置 SFTP 服务器
  17. Linux下SPI Flash-W25Q64驱动调试
  18. 数据结构课程设计——校园导游
  19. link rel=canonical概念和用法(增加页面权重,利于排名)
  20. 梦幻模拟战 服务器维护,《梦幻模拟战》问题修复公告暨致歉信

热门文章

  1. 代码整洁之道读书笔记----第四章---注释--第一节-什么是好注释如何写好注释
  2. android studio for android learning (八)开机启动界面splashActivity
  3. POJ3061尺取法
  4. 矩阵范数的等价性(原创)
  5. 怎么配置php发送邮件环境,如何配置PHP发送电子邮件?
  6. 如何控制写入文件大小java_写入文本文件时如何更改字体大小 - java
  7. 复旦nlp实验室 nlp-beginner 任务三:基于注意力机制的文本匹配
  8. 使用socket模块,多线程扫描指定ip的端口开放情况
  9. lc滤波器是利用电感的感抗_电感器在电路中的应用特性
  10. Linux部署Web项目小记