虚拟机——系统与进程的通用平台
作者 :
译者 : 安虹; 张昱; 吴俊敏
丛书名 : 计算机科学丛书
出版日期 : 2009-03-12
ISBN : 7-111-25668-7
定价 : 78.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 382
开本 : 16开
原书名 :
原出版社: ELSEVIER
属性分类: 教材
包含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 IA32、一种RISC目标指令集IBM PowerPC来说明所开发出的技术。接着介绍二进制转换的概念,并讨论代码发现和代码定位的问题。随后讨论控制转移的处理,许多指令集体系结构都有一些必须用特别方法处理的特殊特征(有些情况下,它们被称为“quirks”)。最后用一个在Shade模拟系统中仿真的例子来结束本章。
第3章讨论进程虚拟机的实现。进程虚拟机支持在由操作系统和低层硬件组成的主机平台上运行单独的客户应用程序。我们讨论虚拟机兼容性的含义,同时说明在一个进程虚拟机中的机器状态,包括寄存器状态和存储器状态如何被映射和维护。这一章我们还研究虚拟机运行时软件如何使用自修改代码和存储保护区。虚拟机的仿真包括两部分。首先讨论指令集的仿真,涉及到第2章中讨论的解释程序和二进制翻译。接着讨论主机操作系统接口的仿真。最后我们介绍了FX!32系统,FX!32系统包含很多本章所讨论的基本原理和思想。
第4章重点讨论用于进行代码优化以获得更好的仿真性能的技术。这一章讨论了执行这些优化所需的基本框架和为了帮助代码优化而在程序执行时必须收集的剖析信息。各种剖析技术都将被讨论。因为在更大的代码块上常常能开展更好的优化,我们介绍了动态基本块(dynamic basic block)、超块(superblock)、轨迹(traces)和树组(tree groups)的概念。这一章还延伸讨论了代码重排序及其局限性。各种代码优化技术,包括块间及块内的优化技术都会介绍。最后通过对Dynamo的案例研究来总结这一章,Dynamo是动态二进制的优化器,应用于使用相同源和目标指令集体系结构的系统中。
第5章介绍了高级语言虚拟机,追溯了从早期的Pascal Pcode虚拟机到面向对象的虚拟机。重点介绍高级语言虚拟机的体系结构,特别是它们支持面向对象编程和安全的特征。现今两个重要的面向对象虚拟机分别是Java虚拟机和微软的CLI,这一章描述了它们的字节码、面向栈的指令集等特征。在介绍这两种虚拟机时,对指令集的介绍都附以对增强虚拟机的库和应用程序接口集合组成的整个平台的介绍。
第6章继续讨论高级语言虚拟机,重点是它们的实现。在前面的章节中,更多关注的是Java,因为它应用广泛而且有很多不同实现。要特别考虑的两个问题是安全和存储管理。垃圾收集的重要性和执行垃圾收集的技术放在一起讨论。随后讨论Java对象与在Java环境外编写的本地程序之间的交互。我们讨论使用第4章提到的代码优化技术以及针对面向对象模式的新技术来提高Java的性能。本章的概念通过案例研究Jikes RVM整合到一起。
第7章我们介绍协同设计(codesigned)虚拟机。在协同设计虚拟机中,传统指令集体系结构可以通过组合面向实现的指令集体系结构和运行在隐藏存储上的翻译来实现。我们讨论把源指令集体系结构的状态映射到实现的指令集体系结构上的技术,以及维护含有翻译后代码的代码缓存技术。本章还讨论诸如精确中断、缺页中断等许多难题。本章以Transmeta Crusoe处理器和IBMAS/400处理器这两个案例研究结束。
第8章涉及典型的系统虚拟机。系统虚拟机支持在主机平台上运行一个完整的客户操作系统及其所有的应用。我们说明了系统虚拟机的提出动机,并概要介绍系统虚拟机的实现方法,包括本地的(native)和宿主(hosted)的虚拟机。我们还讨论对计算机系统三个主要资源:处理器、存储器、I/O的虚拟化技术。处理器虚拟化的条件最早由Popek和Goldberg在70年代阐明,现在已经得到发展。本章还讨论了当指令集不符合这些条件时的虚拟化技术。在讨论存储器虚拟化时,重点讨论带有结构页表和结构TLB的系统。接着讨论各种I/O设备的虚拟化。然后我们把注意力转移到用硬件来提高虚拟机系统性能上,并以IBM z/VM作为例子来说明。本章最后给出了两个案例:VMware开发的宿主虚拟机系统和Intel为其IA32架构开发的VTx(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;UPCBarcelona的Toni Juan;Intel的Alain Kgi;Vmware的BengHong;马萨诸塞大学的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,HoSeop Kim,Kyle Nesbit,和Subramanya Sastry,还有一些学生在此未能一一列出。
本书的出版还包含了出版人Denise Penrose给予的指导,坚持不懈的努力和鼓励,以及她在MorganKaufmann出版社的优秀员工们的支持,他们包括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 ESmith
Ravi Nair

封底文字

硬件是借助微电子工具构建起来的缺乏灵活性的东西。虚拟机用一层软件将硬件包裹起来,从而使得计算机灵活可变。正在发展的一些新技术,能够实现在同一个硬件上运行多个操作系统、执行多套指令集,允许程序在执行过程中切换机器,甚至排斥不安全的代码。虚拟机正改变着计算机和操作系统的设计方法、编程语言的实现方法,以及安全专家对计算机和计算的认知。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)以及计算网格(展示典型的系统虚拟机对新兴网格系统出现的重要作用)方面的应用。

译者简介

安虹; 张昱; 吴俊敏:暂无简介

译者序

进入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 IA32、一种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 VTx(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的VTx虚拟技术,以及多处理器虚拟系统——Cellular Disco。微软、惠普及其他工业研究团体的本领域研究人员对全书进行了审阅。(4)面向未来。本书除在各章节讨论了虚拟机技术的各种应用以外,还在最后一章专门讨论了一些新兴的虚拟机应用,包括安全领域、移动计算环境、以及计算网格方面的应用。
  本书的翻译由中国科学技术大学计算机科学技术系的安虹、张昱和吴俊敏承担。安虹翻译了第1,2,4,9,10章和附录,张昱翻译了第3,5,6章,吴俊敏翻译了第7,8章。翻译完成后,三人进行了互校,最后由安虹对全书进行了统校。研究生隋秀峰、王莉、从明、任永青、王耀彬、李济川等在《虚拟机》课程的学习过程中对相关章节进行了讨论和总结,为理解本书做出了贡献。
  本书涉及的知识面较宽,包括计算机体系的结构、编译和操作系统、应用开发环境等许多方面,观点较新,提出了许多全新的概念和方法。因此,在翻译的过程中我们深感难以全面准确地把握原文的译意,译文难免存在错误和不足,敬请读者批评指正。
  
  译者
  2008年10月于中国科学技术大学

图书目录

出版者的话
译者序
前言第1章虚拟机导论
11计算机体系结构
12虚拟机基础
13进程虚拟机
131多道程序设计
132仿真器和动态二进制翻译器
133相同ISA下的二进制优化器
134高级语言虚拟机:平台
独立性
14系统虚拟机
141系统虚拟机的实现
142全系统虚拟机:仿真
143协同设计虚拟机:硬件优化
15一种分类方法
16总结:虚拟机功能的多样性
17本书的其他部分
第2章仿真:解释和二进制翻译
21基本的解释
22线索解释
23预译码和直接线索解释
231基本的预译码
232直接线索解释
24解释一个复杂的指令集
241IA32 ISA的解释
242线索解释
243一个高性能IA32解释器
25二进制翻译
26代码发现和动态翻译
261代码发现的问题
262代码定位问题
263增量式预译码和翻译
264相同ISA仿真
27控制转移优化
271翻译链接
272软件间接跳转预测
273影子栈
28指令集问题
281寄存器结构
282条件码
283数据格式和运算
284内存地址解析
285内存数据对齐
286字节序
287寻址结构
29案例研究:Shade和模拟过程中的
仿真角色
210总结:性能折中
第3章进程虚拟机
31虚拟机实现
32兼容性
321兼容性的级别
322一个兼容性框架
323实现依赖
33状态映射
331寄存器映射
332内存地址空间映射
34内存结构仿真
341内存保护
342自引用和自修改代码
35指令仿真
351性能权衡
352分阶段的仿真
36例外仿真
361例外检测
362中断处理
363确定精确的客户机状态
37操作系统仿真
371相同操作系统仿真
372不同操作系统仿真
38代码cache管理
381代码cache实现
382替换算法
39系统环境
310案例研究:FX!32
311总结
第4章动态二进制优化
41动态程序的行为
42剖析
421剖析的作用
422剖析的类型
423收集剖析
424解释期间的剖析
425剖析翻译后的代码
426剖析开销
43优化翻译块
431提高局部性
432踪迹
433超块
434动态超块的形成
435树簇
44优化框架
441方法
442优化和兼容性
443一致的寄存器映射
45代码重排
451基元指令重排
452实现一个调度算法
453超块与踪迹
46代码优化
461基本的优化
462兼容性问题
463超块间的优化
464特定指令集的优化
47相同ISA优化系统:特殊的进程
虚拟机
471代码修补
472案例:HP Dynamo
473讨论
48总结
第5章高级语言虚拟机结构
51Pascal Pcode虚拟机
511内存结构
512指令集
513Pcode总结
52面向对象高级语言虚拟机
521安全和保护
522健壮性——面向对象编程
523网络
524性能
53Java虚拟机结构
531数据类型
532数据存储
533Java指令集
534异常和错误
535二进制类
536Java本地接口
54完善平台:APIs
541Java平台
542Java API
543序列化和反射
544Java线程
55微软公共语言基础:一个灵活的
高级语言虚拟机
551公共语言接口
552属性
553微软中间语言
554隔离和应用域
56总结:虚拟ISA的特点
561元数据
562内存结构
563内存地址格式
564精确的异常
565指令集特点
566指令发现
567自修改和自引用代码
568操作系统依赖
第6章高级语言虚拟机实现
61动态类加载
62实现安全
621进程内保护
622安全强制执行
623增强的安全模型
63垃圾收集
631标记清扫收集器
632紧压收集器
633复制收集器
634分代收集器
635增量收集器和并发收集器
636发现根集
637垃圾收集小结
64Java本地接口
65基本仿真
66高性能仿真
661优化框架
662优化
67案例研究:Jikes RVM
68总结
第7章协同设计虚拟机
71存储器和寄存器的状态映射
72自修改与自引用代码
73代码cache的支持
731跳转TLB
732双地址的返回地址栈
74实现精确陷阱
741检查点的硬件支持
742页错误兼容性
75输入/输出
76协同设计虚拟机的应用
77案例研究:Transmeta Crusoe
78案例研究:IBM AS/400
781存储结构
782指令集
783输入/输出
784处理器资源
785代码翻译和隐藏
79总结
第8章系统虚拟机
81关键概念
811外观
812状态管理
813资源控制
814本地虚拟机和宿主虚拟机
815IBM VM/370
82资源虚拟化——处理器
821ISA 的虚拟化条件
822递归虚拟化
823处理问题指令
824关键指令的修补
825高速缓存仿真代码
826普通指令集的高效虚拟化
83资源虚拟化——存储器
831系统虚拟机环境中的虚拟
存储器支持
832虚拟化结构化页表
833虚拟化结构化快表
84资源虚拟化——输入/输出
设备
841虚拟化设备
842虚拟化I/O活动
843输入/输出虚拟化和
宿主虚拟机
844VM/370的输入/输出
虚拟化
85系统虚拟机的性能提升方法
851性能下降的原因
852指令仿真辅助手段
853VMM辅助手段
854客户系统的性能提升
855专用系统
856虚拟机的通用支持
86案例研究:VMware虚拟平台
861处理器虚拟化
862输入/输出虚拟化
863存储器虚拟化
87案例研究:Intel的VTX
(Vanderpool)技术
871技术概述
872技术能力
873状态信息的维护
874例子:rdtsc指令
88总结
第9章多处理器虚拟化
91多处理器系统的划分
911动机
912支持划分的机制
913划分技术的分类
92物理划分
93逻辑划分
931逻辑划分的主要特征
932案例研究:IBM System/390
逻辑划分的特征
933利用超级管理程序进行
逻辑划分
934与系统虚拟机的比较
935对逻辑分区的硬件支持
936超级管理程序服务接口
937动态划分
938动态LPAR
939扩充超级管理程序的任务
94案例研究:Cellular Disco系统
虚拟机——基于划分技术
941Cellular Disco系统概述
942存储器映射
943故障隔离
944存储器借用
945故障恢复
95不同主机与客户ISA的虚拟化
96总结
第10章新兴应用
101安全
1011入侵检测系统
1012攻击的监视和恢复
1013虚拟机技术的作用
1014动态二进制代码重写在安全性
中的角色
1015未来的安全系统
102计算环境的迁移
1021虚拟计算机
1022利用分布式文件系统:互联网络
挂起/恢复模式
1023Stanford Collective的
状态封装
1024在VMotion下迁移虚拟机
103网格:虚拟的组织结构
1031理想网格的特性
1032网格计算模型仿真:Globus
工具集
1033比较传统虚拟机
1034回到原地:在传统虚拟机系统
上实现网格
1035结论
104总结

附录A实际机器
参考文献
索引

教学资源推荐
作者: 沈楠 孔令志 王立伟 编著 沈朝辉 主审
作者: 李丹 赵占坤 丁宏伟 石彦芳
作者: 朱翠娥 曹彩凤 刘兴林 主编 董超俊 何国辉 主审 李敬民 全萍 司徒伟俊 张胜利 编著
作者: [美]孟卫一(Weiyi Meng)纽约州立大学宾汉姆顿分校 於德(Clement T. Yu) 伊利诺伊大学芝加哥分校  著
参考读物推荐
作者: [美]拉斐尔·酷奇(Rafal; Kuc) 马雷克·罗戈任斯基(Marek Rogoziński) 著
作者: William G.Page.Jr
作者: (美)Steve Vandivier Kelly Cox