当前:
首页
-
图书专区
- 虚拟机——系统与进程的通用平台
忘记密码?
虚拟机——系统与进程的通用平台
作者:
无
ISBN:
7-111-25668-7
定价:
78.00
页数:
382
出版日期:
2009年03月12日
译者:
安虹; 张昱; 吴俊敏
图书分类:
计算机
>
数据库
>
数据库理论
原出版社:
ELSEVIER
浏览量:
1587
语种:
简体中文
开本:
16开
原书名:
无
属性分类:
教材
所属丛书:
计算机科学丛书
责任编辑:
适用专业:
绝版:
否
包含CD:
无
硬件是借助微电子工具构建起来的缺乏灵活性的东西。虚拟机用一层软件将硬件包裹起来,从而使得计算机灵活可变。正在发展的一些新技术,能够实现在同一个硬件上运行多个操作系统、执行多套指令集,允许程序在执行过程中切换机器,甚至排斥不安全的代码。虚拟机正改变着计算机和操作系统的设计方法、编程语言的实现方法,以及安全专家对计算机和计算的认知。Smith和Nair的这本书是迄今为止仅有的对虚拟机及其众多应用的综述。
——Jim Larus, 微软研究院
虚拟机已经无处不在。Smith和Nair极为清晰地阐明了虚拟机技术对现代计算机体系结构、程序设计语言、操作系统以及安全技术的深刻影响。对未来计算机系统感兴趣的人有必要研读本书,我极力推荐本书!
——Michael D. Smith, 哈佛大学
纵观历史,操作系统、编程语言和编译器、计算机体系结构等多个领域都发展了各自的虚拟机技术,但没有从统一的角度搭建这些技术的基本关系。现代计算机系统的硬件结构正朝着片上多核、系统多级并行处理的方向发展,并且通过Internet互联起来,构成功能更强大、应用更广泛的系统。在系统的物理资源大大增加的同时,系统的物理实现也变得极为复杂,系统在可扩展性、可靠性、可用性、可管理性和安全性等方面都遇到了难以用单点体系结构技术来解决的一系列问题。虚拟机技术在应对这一系列问题上越来越显现出前所未有的重要性。本书总结了各种不同的虚拟机技术,为计算机各个领域的学者和研发人员提供了一个新的交叉研究领域,便于以更好的组织方式来研究、设计和实现虚拟机。
本书特色
●结构清晰。本书以计算机系统接口抽象层次中两个最重要的接口——应用的二进制接口和应用程序接口为边界,将计算机系统资源的各种虚拟化技术划分为进程虚拟机和系统虚拟机两大类展开讨论,清晰地展现了虚拟化技术各种方法的各个层面及各类应用。
●全面系统。作者从学术和工业应用两个方面对虚拟机技术几十年的研究和发展历史进行了综述,从体系结构、程序设计语言和编译、操作系统及系统安全等多个专业领域深入探讨了虚拟机技术的应用。
●理实交融。本书提供了大量实际虚拟机系统的原理说明及翔实的参考文献,包括Shade模拟系统、FX!32系统、Dynamo/RIO、Java和CLI等流行语言虚拟机、Jikes RVM、Transmeta Crusoe处理器、IBM的AS/400和z/VM系统、VMware的主机虚拟机、Intel的VT-x虚拟技术以及多处理器虚拟系统——Cellular Disco。微软、惠普及其他工业研究团体的本领域研究人员对全书进行了审阅。
●面向未来。本书在最后一章专门讨论了一些新兴的虚拟机应用,包括安全领域(讨论入侵检测系统的原理以及虚拟机在系统攻防方面的应用潜力)、移动计算环境(讨论商业上的应用:VMware的Vmotion)以及计算网格(展示典型的系统虚拟机对新兴网格系统出现的重要作用)方面的应用。
无
为了获得新的能力,解决与计算机系统主要组件接口的多种问题,操作系统、编程语言和编译器、计算机体系结构三个领域都发展了虚拟机技术。支持操作系统的虚拟机技术过去曾相对活跃过,现在又重新引起人们的兴趣,因为它可以在保持高度安全性的同时获得高效的资源共享。虚拟技术在服务器以及其他网络应用,尤其是对安全要求很高的领域越来越受欢迎。在编程语言方面,虚拟机提供了平台无关性,而且支持动态和透明的翻译和优化。在处理器体系结构方面,虚拟机技术允许引入新的指令集以及动态优化,以降低功耗、提高性能。
工业界对一些标准接口的统一,使得虚拟机技术很可能在上面提到的各个领域的革新中起到重要的作用。新的指令集、操作系统、编程语言要想被广泛接受都需要与虚拟机技术结合。许多虚拟机技术发展的推动力及近来获得的大多数重要进步都来自工业界。
历史上,各种虚拟机技术均延伸到了计算机科学和工程学科中。不过,存在许多基础的交叉技术,如果能发挥这些技术的作用就能够以更好的组织方式来研究和设计虚拟机的实现。本书是按统一原则进行虚拟机技术研究的结晶。
本书介绍了对计算机体系结构的理解。按照传统的定义,体系结构就是一个接口。虚拟机把接口连在一起,同时扩大接口的灵活性和功能性。理解体系结构是理解虚拟技术的关键,本书从体系结构研究者的角度,首先保持与接口的相关问题的清晰,使得读者在阅读后对计算机系统接口的重要性,以及它们在计算机主要部件间相互作用时所扮演的角色有更深的认识。
虚拟机应用的广泛性意味着本书有各种各样需求的读者。虽然目前虚拟机还没有被大学作为一个学科来看待,但因为它与计算机科学和工程学的关键原理:体系结构、操作系统、编程语言紧密结合,使得虚拟机成为研究生课程一个很好的方向。本书的初版已经在四所不同大学的研究生课程中使用,并且取得了一定的成功。本书可以作为关于动态优化的编译器课程或包含典型系统虚拟机的操作系统课程的辅助教材。虚拟机技术正在被工业界广泛而快速地接受,从事相关工作的专业人士将会发现本书也可以用于自学前沿技术。本书还可以作为一本参考资料,因为它收集了许多领域的资料。
本书首先总结了各种不同的虚拟机,从一个视角建立起统一的讨论框架。后面的章节中将描述主要的几类虚拟机,突出它们之间的共同点和低层技术。下面粗略地介绍一下每章的纲要。
第1章我们引入了目前计算机系统中流行的抽象概念和接口定义。随后讨论了虚拟化以及其与接口的关系。接着介绍了计算机体系结构概念,总结了各种不同类型的虚拟机。虚拟机可以分为两个主要类型:进程虚拟机和系统虚拟机。本章的最后,我们深入讨论了虚拟机的分类,并提出了一种虚拟机的分类方法。
第2章我们讨论了用目标指令集体系结构(ISA)仿真源指令集体系结构的相关问题。说明了基本解释程序的工作,以及如何用线索化解释(threaded interpretation)来提高性能,并使用一种CISC源指令集Intel IA32、一种RISC目标指令集IBM PowerPC来说明所开发出的技术。接着介绍二进制转换的概念,并讨论代码发现和代码定位的问题。随后讨论控制转移的处理,许多指令集体系结构都有一些必须用特别方法处理的特殊特征(有些情况下,它们被称为“quirks”)。最后用一个在Shade模拟系统中仿真的例子来结束本章。
第3章讨论进程虚拟机的实现。进程虚拟机支持在由操作系统和低层硬件组成的主机平台上运行单独的客户应用程序。我们讨论虚拟机兼容性的含义,同时说明在一个进程虚拟机中的机器状态,包括寄存器状态和存储器状态如何被映射和维护。这一章我们还研究虚拟机运行时软件如何使用自修改代码和存储保护区。虚拟机的仿真包括两部分。首先讨论指令集的仿真,涉及到第2章中讨论的解释程序和二进制翻译。接着讨论主机操作系统接口的仿真。最后我们介绍了FX!32系统,FX!32系统包含很多本章所讨论的基本原理和思想。
第4章重点讨论用于进行代码优化以获得更好的仿真性能的技术。这一章讨论了执行这些优化所需的基本框架和为了帮助代码优化而在程序执行时必须收集的剖析信息。各种剖析技术都将被讨论。因为在更大的代码块上常常能开展更好的优化,我们介绍了动态基本块(dynamic basic block)、超块(superblock)、轨迹(traces)和树组(tree groups)的概念。这一章还延伸讨论了代码重排序及其局限性。各种代码优化技术,包括块间及块内的优化技术都会介绍。最后通过对Dynamo的案例研究来总结这一章,Dynamo是动态二进制的优化器,应用于使用相同源和目标指令集体系结构的系统中。
第5章介绍了高级语言虚拟机,追溯了从早期的Pascal Pcode虚拟机到面向对象的虚拟机。重点介绍高级语言虚拟机的体系结构,特别是它们支持面向对象编程和安全的特征。现今两个重要的面向对象虚拟机分别是Java虚拟机和微软的CLI,这一章描述了它们的字节码、面向栈的指令集等特征。在介绍这两种虚拟机时,对指令集的介绍都附以对增强虚拟机的库和应用程序接口集合组成的整个平台的介绍。
第6章继续讨论高级语言虚拟机,重点是它们的实现。在前面的章节中,更多关注的是Java,因为它应用广泛而且有很多不同实现。要特别考虑的两个问题是安全和存储管理。垃圾收集的重要性和执行垃圾收集的技术放在一起讨论。随后讨论Java对象与在Java环境外编写的本地程序之间的交互。我们讨论使用第4章提到的代码优化技术以及针对面向对象模式的新技术来提高Java的性能。本章的概念通过案例研究Jikes RVM整合到一起。
第7章我们介绍协同设计(codesigned)虚拟机。在协同设计虚拟机中,传统指令集体系结构可以通过组合面向实现的指令集体系结构和运行在隐藏存储上的翻译来实现。我们讨论把源指令集体系结构的状态映射到实现的指令集体系结构上的技术,以及维护含有翻译后代码的代码缓存技术。本章还讨论诸如精确中断、缺页中断等许多难题。本章以Transmeta Crusoe处理器和IBMAS/400处理器这两个案例研究结束。
第8章涉及典型的系统虚拟机。系统虚拟机支持在主机平台上运行一个完整的客户操作系统及其所有的应用。我们说明了系统虚拟机的提出动机,并概要介绍系统虚拟机的实现方法,包括本地的(native)和宿主(hosted)的虚拟机。我们还讨论对计算机系统三个主要资源:处理器、存储器、I/O的虚拟化技术。处理器虚拟化的条件最早由Popek和Goldberg在70年代阐明,现在已经得到发展。本章还讨论了当指令集不符合这些条件时的虚拟化技术。在讨论存储器虚拟化时,重点讨论带有结构页表和结构TLB的系统。接着讨论各种I/O设备的虚拟化。然后我们把注意力转移到用硬件来提高虚拟机系统性能上,并以IBM z/VM作为例子来说明。本章最后给出了两个案例:VMware开发的宿主虚拟机系统和Intel为其IA32架构开发的VTx(Vanderpool)技术。
第9章,我们把注意力转移到了多处理器系统的虚拟化上。我们介绍了系统分区的概念,并为不同类型的分区开发出一种方法。接着我们讨论了物理分区和逻辑分区的原则。逻辑分区的一个例子是IBM LPAR,随后讨论使用系统管理程序进行逻辑分区。之后我们以Cellular Disco作为案例转向利用基于系统虚拟机的方法来对多处理器系统虚拟化。在本章的最后对采用不同指令集体系结构的客户和主机平台的多处理器系统的虚拟化进行探讨,特别关注客户与主机之间不同存储器模型之间的桥接。
第10章讨论虚拟机技术的新兴应用。焦点聚焦于我们觉得在未来几年很重要的三个应用领域。第一个是安全领域,我们讨论现代计算机系统易受攻击的弱点,并简单介绍入侵检测系统的原理,讨论了虚拟机在攻击防护和从攻击中恢复方面的应用潜力,我们还讨论了二进制重写技术在关于RIO系统的安全上扮演的角色。第二个应用是将计算环境从一台机器迁移到另一台,这种技术被用在两个系统中:Internet挂起/恢复(Suspend/Resume)系统和Stanford Collective系统,我们讨论了这两个系统,并讨论了商业上的应用:VMware的VMotion。第三个新型应用是计算网格,我们概述了以网格作为计算的基础设施的动机,并与其他类型虚拟机的动机进行比较。最后展示了典型的系统虚拟机对新兴网格系统出现的重要作用。
附录其实是对计算机系统的浓缩,以提供本书主要章节的背景资料。在附录中,首先讨论了处理器、存储器、I/O在计算机系统中的作用;其次讨论了指令集体系结构,包括对用户应用程序的支持和对操作系统的支持;还讨论了页表和TLB。再次讨论了操作系统的主要组件和应用程序与操作系统之间的系统调用接口。最后,我们讨论了多处理器体系结构,包括集群结构和共享存储多处理器系统,还讨论了共享存储系统中的存储一致性问题。
本书可以不同的方法在课程中使用。大体上,本书是按照把虚拟机作为一门课程的论题(这是我们推荐的方式)来组织的。对于讲述虚拟机的操作系统课,教师可以在介绍第1章后直接进入第8到10章,第2到5章可以稍后作为了解实现细节来讨论。偏向硬件的课程可以从第1到4章开始,然后跳过5、6章,直接进入剩余章节。偏向编程语言的课程可以在完成第1章后直接进入第5章,然后再回到第2到第4章,最后通过第6章把所有内容结合到一起。使用本书中材料的任何课程都可以把第10章作为兴趣篇阅读。
特别感兴趣的技术人员可以自主决定他们阅读本书的顺序,在编写本书过程中,我们力图使读者可以从任何一章感兴趣的开始阅读,并且在阅读整章内容时,只需偶尔翻阅其他章节的内容。
能完成这本书,我们要感谢许多人。我们要特别感谢许多审阅人,他们是IBM研究中心的Michael;菲利浦研究中心的Jan Hoogerbrugge;微软研究中心的Jim Larus;Sun微系统的Tim Lindholm、Bernd Mathiske;以及哈佛大学的Mike Smith。他们耐心地通读了全文,向我们反馈了许多有价值甚至是批评的非常有用的意见。我们也要感谢许多通读了特定章节的审阅人,给予本书有价值的洞察和评价。这些审阅人包括IBM研究中心的Erik Altman、Peter Capek、Evelyn Duesterwald和Michael Gschwind;佛罗里达大学的Renato Figueiredo;加州大学Irvine分校的Michael Franz;明尼苏达大学的Wei Hsu;UPCBarcelona的Toni Juan;Intel的Alain Kgi;Vmware的BengHong;马萨诸塞大学的Eliot Moss;IBM Rochester研究中心的Frank Soltis;Intel的Richard Uhlig;IBM Endicott研究中心的Romney White;普林斯顿大学的Wayne Wolf 和微软研究中心的Ben Zorn。我们很荣幸就虚拟机的各个方面与IBM的Vas Bala、Ek Ekanadham、Wolfram Sauer以及Charles Webb进行了讨论。
作者要感谢Sriram Vajapeyam在早期整理本书的资料时所做的贡献。威斯康辛大学麦迪逊分校和加泰罗尼亚理工大学Barcelona分校的学生们在学习虚拟机课程和开展虚拟机研究过程中提供了有价值的反馈意见。过去和现在对本书有过帮助的学生包括:Nidhi Aggarwal,Todd Bezenek,Jason Cantin,Wooseok Chang,Ashutosh Dhodapkar,Timothy Heil,Shiliang Hu,Tejas Karkhanis,HoSeop Kim,Kyle Nesbit,和Subramanya Sastry,还有一些学生在此未能一一列出。
本书的出版还包含了出版人Denise Penrose给予的指导,坚持不懈的努力和鼓励,以及她在MorganKaufmann出版社的优秀员工们的支持,他们包括Kimberlee Honjo,Angela Dooley,Alyson Day,和Summer Block。
第一作者:我要感谢IBM研究中心的人,特别是Dan Prener,他们在我写作本书的初稿期间(2000~2001)给予了支持。特别感激Erik Altman,在我写作本书的过程中充当了宣传者。我还要感谢我的研究生们对本书的支持和所提出的有用的建议。最后,我要谢谢我的孩子们Barbara,Carolyn 和Jim,在我写作本书的过程中他们给予了鼓励和付出的耐心,容忍经常心烦意乱的父亲。
第二作者:我要感谢Dan Prener,Eric Kronstadt,和Jaime Moreno所给予的鼓励和支持。我还要感谢与Peter Capek,Dan Prener,Peter Oden,Dick Attanasio和Mark Mergen在茶歇时间里的讨论。 最后,我要感谢我的妻子Indira,我的女儿Rohini和Nandini,她们自始至终给予我爱和理解。她们给予我的总是超乎我的想像。
两位作者互致感谢,我们能有机会重温延续了30多年的友谊。 我们有着极为相同的兴趣爱好, 在写这本书的过程中学到了许多东西。 读者如果能够体验我们有过的经历中的一小部分,写作这本书就是值得的。
James ESmith
Ravi Nair
出版者的话
译者序
前言第1章虚拟机导论
11计算机体系结构
12虚拟机基础
13进程虚拟机
131多道程序设计
132仿真器和动态二进制翻译器
133相同ISA下的二进制优化器
134高级语言虚拟机:平台
独立性
14系统虚拟机
141系统虚拟机的实现
142全系统虚拟机:仿真
143协同设计虚拟机:硬件优化
15一种分类方法
16总结:虚拟机功能的多样性
17本书的其他部分
第2章仿真:解释和二进制翻译
21基本的解释
22线索解释
23预译码和直接线索解释
231基本的预译码
232直接线索解释
24解释一个复杂的指令集
241IA32 ISA的解释
242线索解释
243一个高性能IA32解释器
25二进制翻译
26代码发现和动态翻译
261代码发现的问题
262代码定位问题
263增量式预译码和翻译
264相同ISA仿真
27控制转移优化
271翻译链接
272软件间接跳转预测
273影子栈
28指令集问题
281寄存器结构
282条件码
283数据格式和运算
284内存地址解析
285内存数据对齐
286字节序
287寻址结构
29案例研究:Shade和模拟过程中的
仿真角色
210总结:性能折中
第3章进程虚拟机
31虚拟机实现
32兼容性
321兼容性的级别
322一个兼容性框架
323实现依赖
33状态映射
331寄存器映射
332内存地址空间映射
34内存结构仿真
341内存保护
342自引用和自修改代码
35指令仿真
351性能权衡
352分阶段的仿真
36例外仿真
361例外检测
362中断处理
363确定精确的客户机状态
37操作系统仿真
371相同操作系统仿真
372不同操作系统仿真
38代码cache管理
381代码cache实现
382替换算法
39系统环境
310案例研究:FX!32
311总结
第4章动态二进制优化
41动态程序的行为
42剖析
421剖析的作用
422剖析的类型
423收集剖析
424解释期间的剖析
425剖析翻译后的代码
426剖析开销
43优化翻译块
431提高局部性
432踪迹
433超块
434动态超块的形成
435树簇
44优化框架
441方法
442优化和兼容性
443一致的寄存器映射
45代码重排
451基元指令重排
452实现一个调度算法
453超块与踪迹
46代码优化
461基本的优化
462兼容性问题
463超块间的优化
464特定指令集的优化
47相同ISA优化系统:特殊的进程
虚拟机
471代码修补
472案例:HP Dynamo
473讨论
48总结
第5章高级语言虚拟机结构
51Pascal Pcode虚拟机
511内存结构
512指令集
513Pcode总结
52面向对象高级语言虚拟机
521安全和保护
522健壮性——面向对象编程
523网络
524性能
53Java虚拟机结构
531数据类型
532数据存储
533Java指令集
534异常和错误
535二进制类
536Java本地接口
54完善平台:APIs
541Java平台
542Java API
543序列化和反射
544Java线程
55微软公共语言基础:一个灵活的
高级语言虚拟机
551公共语言接口
552属性
553微软中间语言
554隔离和应用域
56总结:虚拟ISA的特点
561元数据
562内存结构
563内存地址格式
564精确的异常
565指令集特点
566指令发现
567自修改和自引用代码
568操作系统依赖
第6章高级语言虚拟机实现
61动态类加载
62实现安全
621进程内保护
622安全强制执行
623增强的安全模型
63垃圾收集
631标记清扫收集器
632紧压收集器
633复制收集器
634分代收集器
635增量收集器和并发收集器
636发现根集
637垃圾收集小结
64Java本地接口
65基本仿真
66高性能仿真
661优化框架
662优化
67案例研究:Jikes RVM
68总结
第7章协同设计虚拟机
71存储器和寄存器的状态映射
72自修改与自引用代码
73代码cache的支持
731跳转TLB
732双地址的返回地址栈
74实现精确陷阱
741检查点的硬件支持
742页错误兼容性
75输入/输出
76协同设计虚拟机的应用
77案例研究:Transmeta Crusoe
78案例研究:IBM AS/400
781存储结构
782指令集
783输入/输出
784处理器资源
785代码翻译和隐藏
79总结
第8章系统虚拟机
81关键概念
811外观
812状态管理
813资源控制
814本地虚拟机和宿主虚拟机
815IBM VM/370
82资源虚拟化——处理器
821ISA 的虚拟化条件
822递归虚拟化
823处理问题指令
824关键指令的修补
825高速缓存仿真代码
826普通指令集的高效虚拟化
83资源虚拟化——存储器
831系统虚拟机环境中的虚拟
存储器支持
832虚拟化结构化页表
833虚拟化结构化快表
84资源虚拟化——输入/输出
设备
841虚拟化设备
842虚拟化I/O活动
843输入/输出虚拟化和
宿主虚拟机
844VM/370的输入/输出
虚拟化
85系统虚拟机的性能提升方法
851性能下降的原因
852指令仿真辅助手段
853VMM辅助手段
854客户系统的性能提升
855专用系统
856虚拟机的通用支持
86案例研究:VMware虚拟平台
861处理器虚拟化
862输入/输出虚拟化
863存储器虚拟化
87案例研究:Intel的VTX
(Vanderpool)技术
871技术概述
872技术能力
873状态信息的维护
874例子:rdtsc指令
88总结
第9章多处理器虚拟化
91多处理器系统的划分
911动机
912支持划分的机制
913划分技术的分类
92物理划分
93逻辑划分
931逻辑划分的主要特征
932案例研究:IBM System/390
逻辑划分的特征
933利用超级管理程序进行
逻辑划分
934与系统虚拟机的比较
935对逻辑分区的硬件支持
936超级管理程序服务接口
937动态划分
938动态LPAR
939扩充超级管理程序的任务
94案例研究:Cellular Disco系统
虚拟机——基于划分技术
941Cellular Disco系统概述
942存储器映射
943故障隔离
944存储器借用
945故障恢复
95不同主机与客户ISA的虚拟化
96总结
第10章新兴应用
101安全
1011入侵检测系统
1012攻击的监视和恢复
1013虚拟机技术的作用
1014动态二进制代码重写在安全性
中的角色
1015未来的安全系统
102计算环境的迁移
1021虚拟计算机
1022利用分布式文件系统:互联网络
挂起/恢复模式
1023Stanford Collective的
状态封装
1024在VMotion下迁移虚拟机
103网格:虚拟的组织结构
1031理想网格的特性
1032网格计算模型仿真:Globus
工具集
1033比较传统虚拟机
1034回到原地:在传统虚拟机系统
上实现网格
1035结论
104总结
附录A实际机器
参考文献
索引
进入21世纪,工艺技术的进步和计算机应用的变化推动了计算机体系结构的迅猛发展,赋予了计算机体系结构新的含义。现代计算机系统的硬件结构正在朝着片上多核、系统多级并行处理的方向发展,并且通过Internet网络互联起来,构成功能更强大、应用更广泛的系统。在系统的物理资源大大增加的同时,系统的物理实现也变得极为复杂,系统的可扩展性、可靠性、可用性、可管理性和安全性等方面都遇到了前所未有的、难以用单点体系结构技术来解决的一系列问题。1992年布特勒·兰普逊(Butler Lampson)在他获得图灵奖发表的演说中引用了大卫·韦勒(David Wheeler)的名言:“计算机科学中的任何问题都可以通过增加一个中间层来解决”,阐明了用虚拟化技术来解决这一系列问题的大方向,揭示了虚拟机技术发展的历史必然。
本书的作者敏锐地观察到了现代计算机体系结构发展趋势的这一重大变化,从计算机体系结构研究者的角度,以计算机系统接口抽象层次中两个最重要的接口——应用二进制接口(Application Binary Interface, ABI)和应用程序接口(Application Program Interface, API)为边界,将计算机系统资源的各种虚拟化技术划分为进程虚拟机和系统虚拟机两大类展开讨论,清晰地展现了虚拟化技术各种方法的各个层面和各类应用。
第1章首先引入了计算机系统接口的抽象定义,讨论了虚拟化与各层接口的关系。然后从计算机体系结构的概念出发,对各种不同类型的虚拟机进行了分类总结,将虚拟机分为两个主要类型:进程虚拟机和系统虚拟机。
第2章至第6章侧重讨论进程虚拟机。第2章讨论在目标指令集体系结构(Instruction Set Architecture, ISA)上仿真源指令集体系结构的相关问题,并以一种CISC源指令集Intel IA32、一种RISC目标指令集IBM PowerPC为例来说明;然后以Shade系统为例介绍了二进制翻译技术。第3章讨论进程虚拟机的实现问题,包括指令集的仿真和主机操作系统接口的仿真,最后介绍实例FX!32系统。第4章讨论通过代码优化获得更好的仿真性能的技术,包括各种程序剖析技术,此外还讨论了代码重排序技术,最后介绍了Dynamo动态二进制代码优化器。第5章介绍高级语言虚拟机的体系结构,特别是它们支持面向对象编程和安全的特征,这一章介绍了当今两个重要的面向对象虚拟机——Java虚拟机和微软的CLI。第6章进一步讨论高级语言虚拟机的实现问题,并以Jikes RVM作为案例研究说明本章的概念。
第7章至第9章侧重讨论系统虚拟机。第7章介绍协同设计虚拟机,并以Transmeta Crusoe处理器和IBMAS/400 处理器的案例研究结束本章。第8章涉及经典的系统虚拟机及其实现方法,包括本地虚拟机和宿主虚拟机。此外还讨论对计算机系统三个主要资源:处理器、存储器、I/O的虚拟化技术,以及如何用硬件来提高虚拟机的性能。本章给出的研究实例包括:VMware和Intel VTx(Vanderpool)。第9章讨论多处理器系统的虚拟化问题,包括对不同指令集的客户和主机平台多处理器系统的虚拟化。
第10章介绍了虚拟机技术新兴的应用领域,重点介绍了在安全领域(讨论入侵检测系统的原理以及虚拟机在系统攻防方面的应用潜力)、移动计算环境(讨论了商业上的应用:VMware的VMotion)以及计算网格(展示典型的系统虚拟机对新兴网格系统出现的重要作用)方面的应用。
附录为本书的主要章节提供了计算机系统结构的背景资料,讨论了处理器、存储器、I/O在计算机系统中的作用。
虚拟机未来应用的广泛性意味着本书适合各种各样的读者,包括从事计算机系统结构、语言和编译、操作系统、应用软件等各个领域的教学和研发人员。本书从写作上具有如下特点:(1)结构清晰。本书从计算机体系结构研究者的角度,以计算机系统接口抽象层次中两个最重要的接口——应用的二进制接口和应用程序接口为边界,将计算机系统资源的各种虚拟化技术划分为进程虚拟机和系统虚拟机两大类展开讨论,清晰地展现了虚拟化技术各种方法的各个层面和各类应用。(2)全面系统。作者从学术和工业应用两个方面对虚拟机技术几十年的研究和发展历史进行了综述,从体系结构、程序设计语言和编译、操作系统及系统安全等多个专业领域深入探讨了虚拟机技术的应用。(3)理实交融。本书提供了大量实际虚拟机系统的原理说明及翔实的参考文献,包括Shade模拟系统、FX!32系统、Dynamo/RIO、Java和CLI等流行语言虚拟机、Jikes RVM、Transmeta Crusoe处理器、IBM的AS/400和z/VM系统、VMware的主机虚拟机、Intel的VTx虚拟技术,以及多处理器虚拟系统——Cellular Disco。微软、惠普及其他工业研究团体的本领域研究人员对全书进行了审阅。(4)面向未来。本书除在各章节讨论了虚拟机技术的各种应用以外,还在最后一章专门讨论了一些新兴的虚拟机应用,包括安全领域、移动计算环境、以及计算网格方面的应用。
本书的翻译由中国科学技术大学计算机科学技术系的安虹、张昱和吴俊敏承担。安虹翻译了第1,2,4,9,10章和附录,张昱翻译了第3,5,6章,吴俊敏翻译了第7,8章。翻译完成后,三人进行了互校,最后由安虹对全书进行了统校。研究生隋秀峰、王莉、从明、任永青、王耀彬、李济川等在《虚拟机》课程的学习过程中对相关章节进行了讨论和总结,为理解本书做出了贡献。
本书涉及的知识面较宽,包括计算机体系的结构、编译和操作系统、应用开发环境等许多方面,观点较新,提出了许多全新的概念和方法。因此,在翻译的过程中我们深感难以全面准确地把握原文的译意,译文难免存在错误和不足,敬请读者批评指正。
译者
2008年10月于中国科学技术大学
读者书评
发表评论
书名
作者
出版社
ISBN
译者
关键字
丛书名
新书上架
畅销书榜
华章推荐
专题活动
数据库系统基础教程(原书第3版)
网络数据库技术应用
数据库系统基础教程(英文版·第3版)
经济管理
MBA
畅销书
法律
管理类
经济类
企业及企业家传记
企业文化
生活类
心理学
职场
其他
管理类教材
财务管理
电子商务
房地产经营管理
工程管理
工商管理
会计学
旅游管理和饭店管理
人力资源管理
市场营销
物流管理
信息管理与信息系统
经济类教材
国际经济与贸易
金融学
经济学
计算机
计算机科学理论与基础知识
计算机组织与体系结构
计算机网络
安全
软件与程序设计
软件工程及软件方法学
操作系统
数据库
硬件与维护
数码/设计
中文信息处理
计算机辅助设计与工程计算
办公软件
专用软件
人工智能
考试认证
工具书
计算机控制与仿真
信息系统
电子商务与计算机文化
电子工程
期刊
游戏
IT服务管理
计算机文化用品
综合
通信
无线电、电信设备
通信技术理论与基础
电声技术和语音信号处理
通信线路工程、通信网
通信系统
有线通信
电话
无线通信
保密通信
计算机网络通信/IP技术
无线电和有线电通信联接系统
无线电中继通信、微波通信
卫星通信
光通信与传输
无线电、电子学的应用
标准规范
政策法规
广播
电视
雷达
无线电导航
电子对抗(干扰及抗干扰)
综合
数学
数学文化史
初等数学
高等数学及高等数学相关数学教程
代数,数论及组合理论
分析
几何及拓扑
概率论与数理统计
运筹学
计算数学
函数论
统计
数学实验与数学建模
文科、经管、金融、工程数学
专著及论文集、工具书
控制论,信息论
数理逻辑
动力系统理论
数学考试辅导用书
Matlab
综合
外语
小语种
地图
英语
综合
其它未分类
站内快速链接
学生用户
教师用户
专业读者
企业用户
图书馆
经销商
图书专区
新书上架
华章推荐
畅销书榜
媒体书评
经管类图书
计算机图书
外语类图书
数学类图书
机电类图书
最新动态
华章动态
行业资讯
新书出版
活动专题
专题活动
专版
论坛
图书区
活动区
媒体区
售前售后服务区
人才招聘
关于我们
认识华章
企业标识
组织结构
图书获奖
联系我们
加盟华章
版权声明
法律条款
版权所有© 2008 北京华章图文信息有限公司 京ICP备08102525号
通信地址:北京市百万庄南街1号 邮编:100037
电话:(010)68318309, 88378998 传真:(010)68311602, 68995260