第1章 开篇 1
1.1形形色色的虚拟化 2
1.2系统虚拟化 3
1.3系统虚拟化简史 5
1.4系统虚拟化的好处 9
第2章 x86架构及操作系统概述 12
2.1x86的历史和操作系统概要 12
2.1.1x86的历史 12
2.1.2操作系统概述 13
2.2x86内存架构 13
2.2.1地址空间 13
2.2.2地址 14
2.2.3x86内存管理机制 15
2.3x86架构的基本运行环境 23
2.3.1三种基本模式 23
2.3.2基本寄存器组 23
2.3.3权限控制 24
2.4中断与异常 25
2.4.1中断架构 25
2.4.2异常架构 29
2.4.3操作系统对中断/异常的处理流程 30
2.5进程 30
2.5.1上下文 31
2.5.2上下文切换 32
2.6I/O架构 33
2.6.1x86的I/O架构 33
2.6.2DMA 33
2.6.3PCI设备 34
2.6.4PCI Express 38
2.7时钟 39
2.7.1x86平台的常用时钟 40
2.7.2操作系统的时钟观 41
第3章 虚拟化概述 42
3.1可虚拟化架构与不可虚拟化架构 42
3.2处理器虚拟化 44
3.2.1指令的模拟 44
3.2.2中断和异常的模拟及注入 47
3.2.3对称多处理器技术的模拟 48
3.3内存虚拟化 51
3.4I/O虚拟化 55
3.4.1概述 55
3.4.2设备发现 56
3.4.3访问截获 57
3.4.4设备模拟 58
3.4.5设备共享 60
3.5VMM的功能和组成 60
3.5.1虚拟环境的管理 61
3.5.2物理资源的管理 62
3.5.3其他模块 63
3.6VMM的分类 63
3.6.1按虚拟平台分类 63
3.6.2按VMM实现结构分类 65
3.7典型虚拟化产品及其特点 68
3.7.1VMware 68
3.7.2Microsoft 69
3.7.3Xen 70
3.7.4KVM 72
3.8思考题 72
第4章 基于软件的完全虚拟化 74
4.1概述 74
4.2CPU虚拟化 74
4.2.1解释执行 75
4.2.2扫描与修补 76
4.2.3二进制代码翻译 79
4.3内存虚拟化 84
4.3.1概述 85
4.3.2影子页表 85
4.3.3内存虚拟化的优化 93
4.4I/O虚拟化 95
4.4.1设备模型 95
4.4.2设备模型的软件接口 97
4.4.3接口拦截和模拟 98
4.4.4功能实现 101
4.4.5案例分析:IDE的DMA操作 102
4.5思考题 103
第5章 硬件辅助虚拟化 104
5.1概述 104
5.2CPU虚拟化的硬件支持 105
5.2.1概述 105
5.2.2VMCS 107
5.2.3VMX操作模式 109
5.2.4VM-Entry/VM-Exit 110
5.2.5VM-Exit 112
5.3CPU虚拟化的实现 116
5.3.1概述 116
5.3.2VCPU的创建 117
5.3.3VCPU的运行 118
5.3.4VCPU的退出 123
5.3.5VCPU的再运行 125
5.3.6进阶 126
5.4中断虚拟化 128
5.4.1概述 128
5.4.2虚拟PIC 129
5.4.3虚拟I/O APIC 130
5.4.4虚拟Local APIC 131
5.4.5中断采集 131
5.4.6中断注入 132
5.4.7案例分析 133
5.5内存虚拟化 135
5.5.1概述 135
5.5.2EPT 136
5.5.3VPID 139
5.6I/O虚拟化的硬件支持 140
5.6.1概述 140
5.6.2VT-d技术 141
5.7I/O虚拟化的实现 147
5.7.1概述 147
5.7.2设备直接分配 147
5.7.3设备I/O地址空间的访问 148
5.7.4设备发现 149
5.7.5配置DMA重映射数据结构 149
5.7.6设备中断虚拟化 150
5.7.7案例分析:网卡的直接分配在Xen里面的实现 150
5.7.8进阶 151
5.8时间虚拟化 151
5.8.1操作系统的时间概念 151
5.8.2客户机的时间概念 152
5.8.3时钟设备仿真 153
5.8.4实现客户机时间概念的一种方法 154
5.8.5实现客户机时间概念的另一种方法 155
5.8.6如何满足客户机时间不等于实际时间的需求 156
5.9思考题 157
第6章 类虚拟化技术 158
6.1概述 159
6.1.1类虚拟化的由来 159
6.1.2类虚拟化的系统实现 160
6.1.3类虚拟化接口的标准化 161
6.2类虚拟化体系结构 162
6.2.1指令集 162
6.2.2外部中断 163
6.2.3物理内存空间 164
6.2.4虚拟内存空间 165
6.2.5内存管理 165
6.2.6I/O子系统 166
6.2.7时间与时钟服务 167
6.3Xen的原理与实现 167
6.3.1超调用 167
6.3.2虚拟机与Xen的信息共享 168
6.3.3内存管理 168
6.3.4页表虚拟化 169
6.3.5事件通道 171
6.3.6授权表 172
6.3.7I/O系统 172
6.3.8实例分析:块设备虚拟化 175
6.4XenLinux的运行 176
6.5思考题 177
第7章 虚拟环境性能和优化 178
7.1性能评测指标 178
7.2性能评测工具 179
7.2.1重用操作系统的性能评测工具 179
7.2.2面向虚拟环境的性能评测工具 180
7.3性能分析工具 181
7.3.1Xenoprof 182
7.3.2Xentrace 184
7.3.3Xentop 185
7.4性能优化方法 185
7.4.1降低客户机退出事件发生频率 185
7.4.2降低客户机退出事件处理时间 186
7.4.3降低处理器利用率 187
7.5性能分析案例 187
7.5.1案例分析:Xenoprof 187
7.5.2案例分析:Xentrace 189
7.6可扩展性 192
7.6.1宿主机的可扩展性 192
7.6.2客户机的可扩展性 193
7.7思考题 194
第8章 虚拟化技术的应用模式 195
8.1常用技术介绍 195
8.1.1虚拟机的动态迁移 195
8.1.2虚拟机快照 196
8.1.3虚拟机的克隆 197
8.1.4案例分析:VMware VMotion和VMware快照 197
8.2服务器整合 200
8.2.1服务器整合技术 200
8.2.2案例分析:VMware Infrastructure3 201
8.3灾难恢复 202
8.3.1灾难恢复与虚拟化技术 202
8.3.2案例分析:VMware Infrastructure3 203
8.4改善系统可用性 203
8.4.1可用性的含义 203
8.4.2虚拟化技术如何提高可用性 204
8.4.3虚拟化技术带来的新契机 204
8.4.4案例分析:VMware HA和LUCOS 205
8.5动态负载均衡 206
8.5.1动态负载均衡的含义 206
8.5.2案例分析:VMware DRS 206
8.6增强系统可维护性 207
8.6.1可维护性的含义 207
8.6.2案例分析:VMware VirtualCenter 208
8.7增强系统安全与可信任性 208
8.7.1安全与可信任性的含义 208
8.7.2虚拟化技术如何提高系统安全 209
8.7.3虚拟化技术如何提高可信任性 210
8.7.4案例分析:sHyper、VMware Infrastructure3和CoVirt 210
8.8Virtual Appliance 211
第9章 前沿虚拟化技术 213
9.1基于容器的虚拟化技术 213
9.1.1容器技术的基本概念和发展背景 214
9.1.2基于容器的虚拟化技术 216
9.2系统安全 219
9.2.1基于虚拟化技术的恶意软件 219
9.2.2虚拟机监控器的安全性 221
9.3系统标准化 224
9.3.1开放虚拟机格式 224
9.3.2虚拟化的可管理性 225
9.3.3虚拟机互操作性标准 226
9.4电源管理 227
9.5智能设备 228
9.5.1多队列网卡 229
9.5.2SR-IOV 229
9.5.3其他 231
索引 233
参考文献 237