虚拟机

[美] James E. Smith

出版时间

2009-03-01

ISBN

9787111256687

评分

★★★★★
书籍介绍

《虚拟机:系统与进程的通用平台》的作者从计算机体系结构研究者的角度,以计算机系统接口抽象层次中两个最重要的接口——应用的二进制接口(Application Binary Interface,ABI)和应用程序接口(Application Program Interface,API)为边界,将计算机系统资源的各种虚拟化技术划分为进程虚拟机和系统虚拟机两大类展开讨论,清晰地展现了虚拟化技术各种方法的各个层面和各类应用。

《虚拟机:系统与进程的通用平台》可以作为讲授计算机系统结构研究生课程《虚拟机技术》的教材或教学参考书。工作在虚拟机技术领域的专业人士可以用于自学这些领域的前沿技术。《虚拟机:系统与进程的通用平台》还可以作为一本计算机系统软硬件参考资料。

AI导读
核心看点
  • 本书从计算机体系结构视角,严格界定虚拟化与抽象的区别,指出虚拟化不隐藏细节而是构建同态映射。作者以ABI和API为边界,将虚拟化技术清晰划分为进程虚拟机和系统虚拟机两大类,深入剖析两者在实现原理、资源管理及安全性上的本质差异,为读者建立严谨的技术认知框架。
  • 书中详细讲解二进制翻译、动态翻译、解释执行等底层核心技术,涵盖代码发现、控制转移优化、指令集转换等高难度主题。通过SHADE等案例研究,揭示如何在不同ISA间实现高性能仿真,帮助读者理解编译器优化、JIT编译及系统级虚拟化背后的复杂工程挑战与性能折衷策略。
  • 作为虚拟化领域的权威教材,本书系统梳理了从早期仿真器到现代云虚拟化技术的发展脉络。内容涵盖寄存器模拟、内存映射、异常处理等系统级细节,不仅适合学术研究,也为理解Java虚拟机、.NET CLR等高级语言运行时的底层机制提供了坚实的体系结构理论基础。
适合谁读
  • 适合计算机体系结构、操作系统、编译原理方向的研究生及科研人员。本书内容深度极高,涉及大量底层系统实现细节,适合作为《虚拟机技术》等高级课程的教材或参考书,帮助读者深入理解虚拟化技术的理论边界与实现难点,进行相关前沿技术研究。
  • 适合从事系统级虚拟化、二进制翻译、恶意代码分析、跨平台兼容层开发的专业工程师。书中关于系统虚拟机实现、指令集仿真、动态优化等技术细节,为从事底层系统软件开发、安全研究及高性能计算基础设施建设的从业者提供了宝贵的技术指导和实现思路。
  • 适合对计算机系统底层原理有强烈探索欲的高级程序员及技术爱好者。虽然阅读难度极大,但能极大提升对操作系统、硬件接口、软件虚拟化等概念的理解深度。建议结合《程序员的自我修养》等书籍对比阅读,以构建完整的计算机系统知识体系。
读前提醒
  • 本书翻译质量参差不齐,部分术语如‘守护’(应为Guard)存在误译,且语言组织生硬。建议读者务必对照英文原版阅读,特别是涉及核心概念定义和复杂算法描述的部分,以免因译文歧义导致理解偏差。切勿依赖译本进行技术实现参考。
  • 内容极其晦涩难懂,涉及大量汇编级细节和体系结构概念。读者需具备扎实的操作系统、计算机组成原理及编译原理基础。建议先通读目录建立整体框架,再针对感兴趣章节深入研读,切勿试图从头到尾线性阅读,否则极易因挫败感而放弃。
  • 书中关于系统虚拟机与进程虚拟机的分类逻辑是核心主线。阅读时应时刻注意区分两者在接口边界、资源访问权限及实现复杂度上的不同。对于二进制翻译等复杂章节,建议结合具体开源项目代码或相关论文辅助理解,避免陷入纯理论推导的困境。
读者共识
  • 读者普遍认可本书在虚拟化领域的权威性和系统性,认为其脉络清晰、高屋建瓴,对两类虚拟化技术的分类讲解极具启发性。尽管阅读体验痛苦,但多位读者表示读完或略读后对虚拟机原理有了深刻认知,认为其学术价值极高,是深入理解系统底层机制的必读经典。
  • 绝大多数读者强烈批评中译本的质量,指出翻译错误多、语句不通顺、术语不规范,严重影响阅读体验。许多读者建议直接阅读英文原版,或仅将译本作为索引参考。这种‘原著神作、译本灾难’的评价在技术社区中形成共识,提醒潜在读者谨慎选择版本。
  • 读者一致认为本书难度极大,不适合初学者入门。部分读者表示仅能当作科普读物浏览,无法深入理解技术细节。但也有读者认为,若能克服阅读障碍,本书提供的系统级视角和底层实现细节是无价的,能显著提升对计算机系统整体架构的理解,值得投入大量时间钻研。

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "在进程虚拟机中,虚拟软件置于ABI接口处,操作系统和硬件结合部的上层。虚拟软件同时仿真用户级指令(user ISA)和操作系统调用。"
  • "在系统虚拟机中,虚拟软件置于ISA接口处,在底层硬件和传统软件之间。"
  • "守护(在图中用斜体字显示)检查A[i]看其是否为零。"
  • "前述的虚拟方法调用的内联方法本质上是一种多版本形式。多版本有两种(或者多种)代码版本,并且一个版本的选择取决于运行时信息,如数据的值或类型信息。对于内联的方法,一个版本是被内联的方法代码,另一个版本是一条invokevirtual指令,而守护选择其中一个版本。"
  • "虚拟化不等同于抽象(抽象需要隐藏细节),虚拟化不需要隐藏细节。虚拟系统的细节常常与真实系统的细节相同。从形式上看,虚拟化是在客户系统和主机系统之间构建的一个同态。"
  • "有些应用中,需要将一个大型的硬盘分成很多小的虚拟盘,这些虚拟盘的每一个都被映射到真实盘的一个大文件,虚拟软件提供虚拟盘内容到真实盘内容之间的映射,把文件抽象作为中间步。每个虚拟盘表面上都包含磁道和扇区,对虚拟盘的写操作,被镜像为对主机系统中对文件的写操作和对应真实盘的写操作,在这个例子中,虚拟盘的接口所提供的细节(磁道,扇区),都与真实盘相同,并没有发生任何抽象。"
目录
第1章 虚拟机导论
1.1 计算机体系结构
1.2 虚拟机基础
1.3 进程虚拟机
1.3.1 多道程序设计

显示全部
用户评论
对虚拟机有了些印象了
R大推荐,与程序员的自我修养、C编程专家相关内容可以结合阅读
介绍了不同层面上的虚拟化,两大块:java虚拟机和系统级虚拟化。读起来有点费劲。
《虚拟机——系统与进程的通用平台》,顾名思义,而且还涉及到很多JIT相关的技术,总评A,推荐指数B+,难度A
技术细节吃不透,只好当科普读物来看了。 挺不错的书,普及你的虚拟化知识。
语言组织上差强人意。
系统学习了虚拟机,温故而知新。
适合系统化的了解虚拟化,比较偏底层。
很好,覆盖面很广,也有深度,很专业
下载
收藏