- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
细说硬件虚拟化
细说硬件虚拟化
介绍
从2005年出现双核处理器,到2007年的四核处理器,多核处理器的发展就如同滚雪球一般声势越滚越大。正当桌面市场考虑该如何来消化这愈发强大的处理能力时,那边的服务器市场却在焦急地等待着2009年八核处理器的到来。这是因为在服务器上有一种处理器杀手级的应用,它要求处理的能力越强越好,那就是虚拟化。
尽管有关虚拟技术将会带来的好处我们已经听到了不少(资源整合,运行遗留程序,负载均衡以及快捷的部署等等),大多数出版物对虚拟技术的细节描写却往往都很笼统。在VMWorld 2008上,我们采访了几位“虚拟机监控程序(hypervisor)”的架构师。在这篇文章中,我们将就虚拟化对性能的影响作一番深入的探讨。
性能?它不是一个无关紧要的问题吗?现代虚拟技术充其量也就损失了不过几个百分点的性能吗?在本文中,我们将向你展示,事实和那些有着利益背景的白皮书所要你相信的之间有着很大的不同。在本文中,我们首先来看一看虚拟技术的基本知识,然后在接下来的几个月里,我们将继续就这一问题展开深入的探讨。
在这篇文章里我们讨论的是“硬件虚拟”,所涉及的有可以使得运行多个诸如VMware的ESX,XEN和Windows 2008的Hyper-V这样的虚拟服务器成为可能的技术等。最近,在我们新的IT门户网站上,我们刊登了一篇有关Thinstall,SoftGrid和其它类似软件的“软件虚拟”的介绍性文章。这些文章所讲的都是关于虚拟服务器的性能问题,以及如何更好地理解虚拟技术。
硬件,或者机器虚拟与“普通”虚拟之间的比较
从某种程度来说,我们早已经用上了虚拟化技术。事实上,如果没有现代操作系统提供的虚拟化,我们当中的大多数人的工作效率便不会有如此之高。一台装上现代操作系统的“原生”的服务器或者工作站在处理如磁盘、处理器与内存这样的系统资源时,就已经用上了虚拟技术了。举例来说,尽管在一台运行有Windows 2003系统的服务器上只装上4GB的内存,但是运行其中的10个软件却认为它们都可以用上属于它们的2GB(或者3GB)的用户态地址空间。在一个RAID-5的磁盘阵列里也许只有3个磁盘存在,但如果你把它们分了10个卷(或者是逻辑单元),那么看起来就像是机器里装有10个磁盘一样。或者,在一台服务器上就只有2个处理器,然而它给你的感觉却是5个正在运行的程序仿佛可以在同一时间去完成它们的工作一般。
既然现代操作系统已经为我们提供了这样的虚拟功能,我们为什么还要利用虚拟机监控程序来帮助实现完全的虚拟服务器呢?一方面,操作系统通过为每个进程分配预选定义好的内存空间,使它们的数据段与代码段相分离这样的手段来保护系统中的进程。与此同时,所有这些进程之间共享同样的文件,更可以访问某些共享内存,而操作系统的全局配置则对每一个进程都起作用。在许多场合下,这样的隔离是远远不够的。如果有一个进程占用了100%的处理器时间,那么它就会使其它的程序的运行慢如蜗牛,——哪怕是现代的操作系统都用上了抢占式多任务技术。而如果采用纯硬件虚拟技术的话,那么你可以从根本上隔离每个拥有自己的客户操作系统的虚拟服务器,它们之间的通讯只能通过虚拟网络才能实现。
处理器运行特权
要在一台物理机器上创建几台虚拟服务器,就必须引进一种称之为hypervisor的新型的软件层,它的另外一个名称是“虚拟机监控程序”,简称VMM。它最重要的任务是调节对底层硬件的访问,以保证各个客户操作系统能共享同一台机器。你可以说VMM就像一个操作系统管理进程和线程那样,来管理位于其上的虚拟服务器(客户操作系统和运行其中的进程)。
要理解VMM是如何工作的,我们必须首先理解现代操作系统的工作原理。大多数现代操作系统拥有两种工作模式:
核心模式。在这种模式里,任何处理器指令都可以执行,包括那些处理中断,内存管理等具有“特权”的指令。当然不用说,操作系统本身便运行这种模式下面。
用户模式。只有用于计算和处理数据的指令得以执行。运行在这种模式下面的各种应用程序要使用硬件资源时,只能通过请求系统核心的服务才能完成(系统调用)。
整个一个用户模式和核心模式的安排,乃是建立在内存的分页工作的基础之上的。(当然,也可以用段寄存器和表的方式来使用内存,但这已经超出本文的讲述范围了。)在一条特权指令得以执行之前,处理器首先会检查这条指令的来源内存页是否具有正确的2位编码的特权。00编码的指令具有最高特权的指令。2位编码的形式允许总共有4种指令权限,11编码表示的则为最低特权的指令。
为了便于说明这个指令权限问题,就像你在本文中看到一样,很多出版物利用了“洋葱圈”图形来形象地表示处理器的2位等级编码。Ring0是具有最高特权的级别,Ring1次之,而Ring3级就是用户应用程序所在的那一级,在这个级别里没有相应的特权
文档评论(0)