标题：系统虚拟化—原理与实现
介绍
基本信息作者:英特尔开源软件技术中心复旦大学并行处理研究所
出版社：清华大学出版社
页码：238 页
出版日期：2009年
ISBN：9787302193722  装帧：平装
开本：16
定价：29.00
内容简介《系统虚拟化:原理与实现》深入而又系统地介绍了以软件完全虚拟化、硬件辅助虚拟化及类虚拟化为核心的各种系统虚拟化技术。全书共9章，第1章概述性地介绍了虚拟化技术； 第2章介绍计算机系统知识； 第3章从CPU虚拟化、内存虚拟化和I/O虚拟化三大块对系统虚拟化技术进行概述，并介绍虚拟机监控器（VMM）的组成与分类，而且对市场上流行的虚拟化产品进行了简单介绍； 第4~6章分别从基于软件的完全虚拟化、硬件辅助的完全虚拟化和类虚拟化三种实现技术角度深入介绍系统虚拟化方法； 第7章介绍虚拟机的性能评测和调试技术; 第8章介绍系统虚拟化的应用实例； 最后在第9章对虚拟机和系统虚拟化技术的发展作一个展望。
《系统虚拟化:原理与实现》是系统虚拟化技术实现原理的全面展示，也是作者这些年在虚拟化学术
和工业研究领域开发的经验总结。《系统虚拟化:原理与实现》理论与实践相结合，用通俗易懂的语言描述系统虚拟化技术原理，其中不乏具有代表性和普遍意义的实例和技术细节，是学习系统虚拟化技术的宝贵资料。
虚拟化技术在近期成为了学术界和产业界的一大焦点，并且被认为是在将来的一段时间内最具影响力的技术之一，它可能会改变现有系统软件的整个样子，为系统软件带来一场新的革命。
虚拟化技术正在成为系统软件中广泛存在的一层，它的普及可以从三个角度来看待。从硬件平台来讲，虚拟化技术被用于企业级服务器、桌面平台（例如台式
计算机和笔记本式计算机）以及嵌入式系统中； 从用途来讲，虚拟化技术被用于系统资源管理、容错、软硬件维护、增强系统安全、提升性能和节能等领域； 
从趋势来讲，虚拟化技术正在广泛地与其他技术结合，并且得到更多硬件上的支持，其性能损失不断降低，部分固化到硬件中。
虚拟化技术的含义很广泛。将任何一种形式的资源抽象成另一种形式的技术都是虚拟化。在常用的操作系统中就存在某种意义上的“虚拟化技术”，例如虚拟内存空间和进程。如果把内存看作是一个设备，虚拟内存就是将物理内存虚拟成多个内存空间。虚拟内存的容量可以少于或多于物理内存。进程的概念实际是对于物理硬件执行环境的一个抽象，每一个进程都享有一个完整的硬件执行环境，并且与其他进程相隔离。
相对于进程级的虚拟化，虚拟机是另外一个层面的虚拟化，即系统级虚拟化。与虚拟单个进程的执行环境所不同，系统级虚拟化所抽象的环境是整个计算机，其抽象出的环境称为虚拟机，包括CPU、内存和I/O。在每个虚拟机中都可以运行一个操作系统，在一台计算机上可以虚拟出多个虚拟机。
本书尝试将当前主要的虚拟机和系统级虚拟化原理梳理出来，从一个系统设计者的角度来介绍。从基本的原理出发，本书结合主流的x86体系结构和硬件上对虚拟化的支持来介绍系统级虚拟化是如何实现的。除介绍虚拟机与系统级虚拟化原理之外，本书力图加入学术界对于虚拟化技术或利用虚拟化技术的最新研究、产业界的最新应用和将来可能的发展趋向。
编辑推荐
《系统虚拟化:原理与实现》不仅可以作为教材，供计算机相关专业的大学高年级学生和研究生阅读； 而且可以作为一本参考手册，供大学或企业里与系统相关领域的研究开发人员以及对虚拟机及虚拟化核心技术有兴趣的研究者和开源工作者阅读。
目录
第1章　开篇
1.1　形形色色的虚拟化
1.2　系统虚拟化
1.3　系统虚拟化简史
1.4　系统虚拟化的好处
第2章　x86架构及操作系统概述
2.1　x86的历史和操作系统概要
2.1.1　x86的历史
2.1.2　操作系统概述
2.2　x86内存架构
2.2.1　地址空间
2.2.2　地址
2.2.3　x86内存管理机制
2.3　x86架构的基本运行环境
2.3.1　三种基本模式
2.3.2　基本寄存器组
2.3.3　权限控制
2.4　中断与异常
2.4.1　中断架构
2.4.2　异常架构
2.4.3　操作系统对中断/异常的处理流程
2.5　进程
2.5.1　上下文
2.5.2　上下文切换
2.6　I/O架构
2.6.1　x86的I/O架构
2.6.2　DMA
2.6.3　PCI设备
2.6.4　PCI　Express
2.7　时钟
2.7.1　x86平台的常用时钟
2.7.2　操作系统的时钟观
第3章　虚拟化概述
3.1　可虚拟化架构与不可虚拟化架构
3.2　处理器虚拟化
3.2.1　指令的模拟
3.2.2　中断和异常的模拟及注入
3.2.3　对称多处理器技术的模拟
3.3　内存虚拟化
3.4　I/O虚拟化
3.4.1　概述
3.4.2　设备发现
3.4.3　访问截获
3.4.4　设备模拟
3.4.5　设备共享
3.5　VMM的功能和组成
3.5.1　虚拟环境的管理
3.5.2　物理资源的管理
3.5.3　其他模块
3.6　VMM的分类
3.6.1　按虚拟平台分类
3.6.2　按VMM实现结构分类
3.7　典型虚拟化产品及其特点
3.7.1　VMware
3.7.2　Microsoft
3.7.3　Xen
3.7.4　KVM
3.8　思考题
第4章　基于软件的完全虚拟化
4.1　概述
4.2　CPU虚拟化
4.2.1　解释执行
4.2.2　扫描与修补
4.2.3　二进制代码翻译
4.3　内存虚拟化
4.3.1　概述
4.3.2　影子页表
4.3.3　内存虚拟化的优化
4.4　I/O虚拟化
4.4.1　设备模型
4.4.2　设备模型的软件接口
4.4.3　接口拦截和模拟
4.4.4　功能实现
4.4.5　案例分析：　IDE的DMA操作
4.5　思考题
第5章　硬件辅助虚拟化
5.1　概述
5.2　CPU虚拟化的硬件支持
5.2.1　概述
5.2.2　VMCS
5.2.3　VMX操作模式
5.2.4　VM?Entry/VM?Exit
5.2.5　VM?Exit
5.3　CPU虚拟化的实现
5.3.1　概述
5.3.2　VCPU的创建
5.3.3　VCPU的运行
5.3.4　VCPU的退出
5.3.5　VCPU的再运行
5.3.6　进阶
5.4　中断虚拟化
5.4.1　概述
5.4.2　虚拟PIC
5.4.3　虚拟I/O　APIC
5.4.4　虚拟Local　APIC
5.4.5　中断采集
5.4.6　中断注入
5.4.7　案例分析
5.5　内存虚拟化
5.5.1　概述
5.5.2　EPT
5.5.3　VPID
5.6　I/O虚拟化的硬件支持
5.6.1　概述
5.6.2　VT?d技术
5.7　I/O虚拟化的实现
5.7.1　概述
5.7.2　设备直接分配
5.7.3　设备I/O地址空间的访问
5.7.4　设备发现
5.7.5　配置DMA重映射数据结构
5.7.6　设备中断虚拟化
5.7.7　案例分析：　网卡的直接分配在Xen里面的实现
5.7.8　进阶
5.8　时间虚拟化
5.8.1　操作系统的时间概念
5.8.2　客户机的时间概念
5.8.3　时钟设备仿真
5.8.4　实现客户机时间概念的一种方法
5.8.5　实现客户机时间概念的另一种方法
5.8.6　如何满足客户机时间不等于实际时间的需求
5.9　思考题
第6章　类虚拟化技术
6.1　概述
6.1.1　类虚拟化的由来
6.1.2　类虚拟化的系统实现
6.1.3　类虚拟化接口的标准化
6.2　类虚拟化体系结构
6.2.1　指令集
6.2.2　外部中断
6.2.3　物理内存空间
6.2.4　虚拟内存空间
6.2.5　内存管理
6.2.6　I/O子系统
6.2.7　时间与时钟服务
6.3　Xen的原理与实现
6.3.1　超调用
6.3.2　虚拟机与Xen的信息共享
6.3.3　内存管理
6.3.4　页表虚拟化
6.3.5　事件通道
6.3.6　授权表
6.3.7　I/O系统
6.3.8　实例分析：　块设备虚拟化
6.4　XenLinux的运行
6.5　思考题
第7章　虚拟环境性能和优化
7.1　性能评测指标
7.2　性能评测工具
7.2.1　重用操作系统的性能评测工具
7.2.2　面向虚拟环境的性能评测工具
7.3　性能分析工具
7.3.1　Xenoprof
7.3.2　Xentrace
7.3.3　Xentop
7.4　性能优化方法
7.4.1　降低客户机退出事件发生频率
7.4.2　降低客户机退出事件处理时间
7.4.3　降低处理器利用率
7.5　性能分析案例
7.5.1　案例分析：　Xenoprof
7.5.2　案例分析：　Xentrace
7.6　可扩展性
7.6.1　宿主机的可扩展性
7.6.2　客户机的可扩展性
7.7　思考题
第8章　虚拟化技术的应用模式
8.1　常用技术介绍
8.1.1　虚拟机的动态迁移
8.1.2　虚拟机快照
8.1.3　虚拟机的克隆
8.1.4　案例分析：　VMware　VMotion　和VMware　快照
8.2　服务器整合
8.2.1　服务器整合技术
8.2.2　案例分析：　VMware　Infrastructure　3
8.3　灾难恢复
8.3.1　灾难恢复与虚拟化技术
8.3.2　案例分析：　VMware　Infrastructure　3
8.4　改善系统可用性
8.4.1　可用性的含义
8.4.2　虚拟化技术如何提高可用性
8.4.3　虚拟化技术带来的新契机
8.4.4　案例分析：　VMware　HA和　LUCOS
8.5　动态负载均衡
8.5.1　动态负载均衡的含义
8.5.2　案例分析：　VMware　DRS
8.6　增强系统可维护性
8.6.1　可维护性的含义
8.6.2　案例分析：　VMware　VirtualCenter
8.7　增强系统安全与可信任性
8.7.1　安全与可信任性的含义
8.7.2　虚拟化技术如何提高系统安全
8.7.3　虚拟化技术如何提高可信任性
8.7.4　案例分析：　sHyper、VMware　Infrastructure　3和CoVirt
8.8　Virtual　Appliance　
第9章　前沿虚拟化技术
9.1　基于容器的虚拟化技术
9.1.1　容器技术的基本概念和发展背景
9.1.2　基于容器的虚拟化技术
9.2　系统安全
9.2.1　基于虚拟化技术的恶意软件
9.2.2　虚拟机监控器的安全性
9.3　系统标准化　
9.3.1　开放虚拟机格式
9.3.2　虚拟化的可管理性
9.3.3　虚拟机互操作性标准
9.4　电源管理
9.5　智能设备
9.5.1　多队列网卡
9.5.2　SR?IOV
9.5.3　其他
索引
参考文献
……
序言
虚拟化技术在近期成为了学术界和产业界的一大焦点，并且被认为是在将来的一段时间内最具影响力的技术之一，它可能会改变现有系统软件的整个样子，为系统软件带来一场新的革命。
虚拟化技术正在成为系统软件中广泛存在的一层，它的普及可以从三个角度来看待。从硬件平台来讲，虚拟化技术被用于企业级服务器、桌面平台（例如台式
计算机和笔记本式计算机）以及嵌入式系统中； 从用途来讲，虚拟化技术被用于系统资源管理、容错、软硬件维护、增强系统安全、提升性能和节能等领域； 
从趋势来讲，虚拟化技术正在广泛地与其他技术结合，并且得到更多硬件上的支持，其性能损失不断降低，部分固化到硬件中。
虚拟化技术的含义很广泛。将任何一种形式的资源抽象成另一种形式的技术都是虚拟化。在常用的操作系统中就存在某种意义上的“虚拟化技术”，例如虚拟内存空间和进程。如果把内存看作是一个设备，虚拟内存就是将物理内存虚拟成多个内存空间。虚拟内存的容量可以少于或多于物理内存。进程的概念实际是对于物理硬件执行环境的一个抽象，每一个进程都享有一个完整的硬件执行环境，并且与其他进程相隔离。
相对于进程级的虚拟化，虚拟机是另外一个层面的虚拟化，即系统级虚拟化。与虚拟单个进程的执行环境所不同，系统级虚拟化所抽象的环境是整个计算机，其抽象出的环境称为虚拟机，包括CPU、内存和I/O。在每个虚拟机中都可以运行一个操作系统，在一台计算机上可以虚拟出多个虚拟机。
本书尝试将当前主要的虚拟机和系统级虚拟化原理梳理出来，从一个系统设计者的角度来介绍。从基本的原理出发，本书结合主流的x86体系结构和硬件上对虚拟化的支持来介绍系统级虚拟化是如何实现的。除介绍虚拟机与系统级虚拟化原理之外，本书力图加入学术界对于虚拟化技术或利用虚拟化技术的最新研究、产业界的最新应用和将来可能的发展趋向。
1. 面向的读者
系统虚拟化是一门跨领域的学科，涉及操作系统、编译和体系结构等学科知识，并延展到资源管理、性能和系统安全等问题。
本书定位的读者包括计算机相关专业的高年级学生、研究生、研究开发人员及对虚拟机及虚拟化核心技术有兴趣的学者。
2. 全书结构
本书的结构安排尽可能使每章的内容自包含，尽力让对于某一章节感兴趣的读者不需检索其他章节的内容。
第1章从虚拟化技术的历史开始讲起，将现有的虚拟化技术作一个分类。
第2章介绍了一个缩略版的计算机系统，帮助读者温习这些知识。其内容主要包括硬件抽象层、操作系统的硬件管理机制以及进程等与后续章节有关的操作系统概念。对于这些内容已经了解的读者可以直接跳过这一章。
第3章介绍典型系统级虚拟化的技术以及VMM的组成和分类，最后还介绍一些目前市场比较流行的虚拟化产品。
第4章介绍基于软件的完全虚拟化技术。
第5章介绍硬件辅助的完全虚拟化技术。
第6章以Xen为例介绍类虚拟化技术的实现原理。
第7章介绍虚拟机的性能评测和调试技术。
第8章介绍系统虚拟化的应用实例。
第9章对虚拟机和系统虚拟化技术的发展作一个展望。
本书的第1章由复旦大学张逢、英特尔公司董耀祖、李少凡合作撰写； 第2章由复旦大学俞捷和英特尔公司张鑫合作撰写； 第3章由英特尔公司田坤和余珂撰写； 第4章由复旦大学张逢和黄弋简撰写； 第5章由英特尔公司余珂、李欣、蒋运宏和徐雪飞撰写； 第6章由复旦大学张逢、刘鹏程和黄弋简撰写； 第7章由英特尔公司董耀祖和杨晓伟撰写； 第8章由英特尔公司余珂、王庆和复旦大学吴曦、袁立威合作完成； 第9章由复旦大学刘鹏程、周亦勋、宋翔和英特尔公司董耀祖合作完成。英特尔公司李少凡和董耀祖对本书的每一版草稿均作了
细致的审阅工作，余珂、张鑫、王庆以及复旦大学的张逢对全书的统编
和修改作了大量的工作。
3. 如何阅读本书
对于虚拟机和系统虚拟化基本原理可以阅读第1、3、4、5、6章。
希望单独了解基于软件的完全虚拟化、硬件辅助的完全虚拟化或类虚拟化的读者可以单独阅读对应的章节。
希望了解系统虚拟化性能评测和优化技术的读者可以阅读第7章。
希望了解系统虚拟化技术背景、应用和发展的读者可以阅读第1、8、9章。
4. 感谢
在这里，首先要感谢英特尔公司副总裁王文汉博士、英特尔亚太研发有限公司总经理兼首席研发官梁兆柱博士、英特尔亚太研发有限公司
创新中心总监黄波博士和英特尔开源技术中心高级
经理冯晓焰先生，以及复旦大学软件学院院长
臧斌宇教授，他们是本书的发起人，并一直鼓励我们完成本书。
也要谢谢所有在英特尔开源技术中心工作的同事以及所有在复旦大学软件学院学习工作的同事和同学们，感谢他们不仅在工业界还在学术界推动虚拟化技术向前发展所做的努力，同时也感谢他们对本书草稿进行了一遍又一遍的阅读，并提出了许多定贵的修改意见。在此，特别感谢英特尔公司辛晓慧、崔得暄、韩伟东、贺青和单海涛等，他们为本书提供了大量技术资料。
还要特别感谢复旦大学陈海波、陈榕、杨子夜、王慧红和陈诚等，他们为本书的编撰提供了许多帮助。
最后，感谢您在茫茫书海中选择了本书，并衷心祝愿您能从中受益。
虚拟化专题写作组
2008年9月