- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
虚拟 Linux
虚拟化方法、架构和实现概述
级别: 中级
M. Tim Jones, 顾问工程师, Emulex
2007 年 1 月 15 日
虚拟化的含义丰富,应用广泛。目前虚拟化技术主要关注于服务器虚拟化,即在一个宿主
计算机上提供多个独立操作系统。本文将探索虚拟化背后的思想,然后讨论实现虚拟化的
一些技术。我们还将了解现有的其他一些虚拟化技术,例如 Linux 上操作系统的虚拟化。
进行虚拟化 就是要将某种形式的东西以另外一种形式呈现出来。对计算机进行虚拟化就是要将计算机
以多台计算机或一台完全不同的计算机的形式呈现出来。
虚拟化也可以将多台计算机组合成一台计算机的形式呈现出来。这通常称为服务器聚合或网格计算。
下面让我们首先来看一下虚拟化的起源。
虚拟化的历史
虚拟化并不是什么新主题;实际上,它的存在已经超过 40 年了。虚拟化技术最早的一些用法包括
IBM® 7044、麻省理工学院(MIT )在 IBM 704 上开发的 CTSS (Compatible Time Sharing System )
以及曼彻斯特大学的 Atlas 项目(世界上最早的超级计算机之一),这些都是请求页面调度和监管进
程调用的先驱。
硬件虚拟化
IBM 早在 20 世纪 60 年代开发 System/360™ Model 67 大型机时就认识到了虚拟化的重要性。Model
67 通过 VMM (Virtual Machine Monitor )对所有的硬件接口都进行了虚拟化。在早期计算中,操作系
统被称为 supervisor。能够在其他操作系统上运行的操作系统被称为 hypervisor (这个术语是在 20
世纪 70 年代出现的)。
VMM 可以直接在底层硬件上运行,允许运行多个虚拟机 (VM )。每个 VM 都可以运行一个自己私有
操作系统的实例 —— 在早些时候,这称为 CMS (或 Conversational Monitor System )。之后 VM 继
续发展,现在您可以在 System z9™ 大型机上发现 VM。这提供了很好的向后兼容性,甚至是对
System/360 产品线的兼容性。
处理器虚拟化
虚拟化早期的另外一种用法(在本例中是对处理器的仿真)是 P-code (或伪码)机。P-code 是一种
机器语言,运行于虚拟机而不是实际硬件。P-code 早在 20 世纪 70 年代就已在加州大学圣地亚哥分
校(UCSD )Pascal 系统上颇有名气了,它将 Pascal 程序编译成 P-code ,然后在一个 P-code 虚拟
机上运行。这就使 P-code 程序具有了高度的可移植性,而且,只要有可用的 P-code 虚拟机,P-
code 程序就可以运行。
20 世纪 60 年代对 BCPL (Basic Combined Programming Java 虚拟机(JVM )
Language )的设计中也采用了相同的概念,C 语言即由 Java™ 语言对自己的虚拟机沿用了
BCPL 发展而来。在这种用法中,编译器会将 BCPL 代码编 这种 P-code 模型。这样只需要通过
译成称为 O-code 的中间机器代码。接下来的第二个步骤是 简单地移植 JVM 就可以 Java 程
将 O-code 编译成目标机器的原始语言。现代编译器所使用 序广泛地分布到无数的体系架构上。
的这种模型为将编译器移植到新目标体系结构上提供了很大
的灵活性(通过一种中间语言将前端和后端分隔开来)。
指令集虚拟化
虚拟化最新的发展称为指令集虚拟化,或者二进制转换。在这种模型中,虚拟指令集被转换成底层硬
件的物理指令集,这个过程通常都是动态的。当代码执行时,就会对代码的某个段进行转换。如果出
现分支情况,就会导入新代码集并进行转换。这使它与缓存操作非常类似,后者是将指令块从内存移
动到本地快速缓存中执行。
这种模型最近在 Transmeta 设计的 Crusoe 中央处理单元(CPU )中得到了使用。二进制转换由
Code Morphing 的专利技术实现。类似的一个例子是完全虚拟化解决方案通过运行时代码扫描来查找
和重定向特权指令(用来解决特定处理器指令集的一些问题)。
虚拟化的类型 虚拟化和游戏
一篇有关虚拟化的文章如果不提一下
实现虚拟化的方法不止一种。实际上,
文档评论(0)