《虚拟机系统与进程的通用平台》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)JamesE.Smith,RaviNair;安虹,张昱,吴俊敏译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2009
  • ISBN:9787111256687
  • 页数:382 页
图书介绍:

第1章 虚拟机导论 1

1.1计算机体系结构 4

1.2虚拟机基础 5

1.3进程虚拟机 8

1.3.1多道程序设计 8

1.3.2仿真器和动态二进制翻译器 8

1.3.3相同-ISA下的二进制优化器 9

1.3.4高级语言虚拟机:平台独立性 9

1.4系统虚拟机 10

1.4.1系统虚拟机的实现 11

1.4.2全系统虚拟机:仿真 11

1.4.3协同设计虚拟机:硬件优化 12

1.5一种分类方法 13

1.6总结:虚拟机功能的多样性 14

1.7本书的其他部分 14

第2章 仿真:解释和二进制翻译 16

2.1基本的解释 17

2.2线索解释 19

2.3预译码和直接线索解释 20

2.3.1基本的预译码 20

2.3.2直接线索解释 22

2.4解释一个复杂的指令集 22

2.4.1 IA-32 ISA的解释 23

2.4.2线索解释 27

2.4.3一个高性能IA-32解释器 28

2.5二进制翻译 30

2.6代码发现和动态翻译 32

2.6.1代码发现的问题 32

2.6.2代码定位问题 33

2.6.3增量式预译码和翻译 33

2.6.4相同-ISA仿真 38

2.7控制转移优化 38

2.7.1翻译链接 39

2.7.2软件间接跳转预测 40

2.7.3影子栈 40

2.8指令集问题 41

2.8.1寄存器结构 42

2.8.2条件码 42

2.8.3数据格式和运算 45

2.8.4内存地址解析 45

2.8.5内存数据对齐 46

2.8.6字节序 46

2.8.7寻址结构 46

2.9案例研究:Shade和模拟过程中的仿真角色 47

2.10总结:性能折中 48

第3章 进程虚拟机 51

3.1虚拟机实现 52

3.2兼容性 53

3.2.1兼容性的级别 53

3.2.2一个兼容性框架 54

3.2.3实现依赖 57

3.3状态映射 58

3.3.1寄存器映射 58

3.3.2内存地址空间映射 59

3.4内存结构仿真 61

3.4.1内存保护 62

3.4.2自引用和自修改代码 64

3.5指令仿真 69

3.5.1性能权衡 69

3.5.2分阶段的仿真 70

3.6例外仿真 71

3.6.1例外检测 72

3.6.2中断处理 73

3.6.3确定精确的客户机状态 73

3.7操作系统仿真 77

3.7.1相同操作系统仿真 77

3.7.2不同操作系统仿真 79

3.8代码cache管理 80

3.8.1代码cache实现 80

3.8.2替换算法 81

3.9系统环境 84

3.10案例研究:FX!32 86

3.11总结 88

第4章 动态二进制优化 89

4.1动态程序的行为 92

4.2剖析 95

4.2.1剖析的作用 95

4.2.2剖析的类型 96

4.2.3收集剖析 98

4.2.4解释期间的剖析 98

4.2.5剖析翻译后的代码 100

4.2.6剖析开销 101

4.3优化翻译块 101

4.3.1提高局部性 101

4.3.2踪迹 103

4.3.3超块 104

4.3.4动态超块的形成 104

4.3.5树簇 107

4.4优化框架 108

4.4.1方法 108

4.4.2优化和兼容性 109

4.4.3一致的寄存器映射 111

4.5代码重排 112

4.5.1基元指令重排 112

4.5.2实现一个调度算法 116

4.5.3超块与踪迹 120

4.6代码优化 120

4.6.1基本的优化 121

4.6.2兼容性问题 122

4.6.3超块间的优化 123

4.6.4特定指令集的优化 124

4.7相同-ISA优化系统:特殊的进程虚拟机 126

4.7.1代码修补 127

4.7.2案例:HP Dynamo 129

4.7.3讨论 131

4.8总结 132

第5章 高级语言虚拟机结构 133

5.1 Pascal P-code虚拟机 135

5.1.1内存结构 135

5.1.2指令集 136

5.1.3 P-code总结 136

5.2面向对象高级语言虚拟机 137

5.2.1安全和保护 139

5.2.2健壮性——面向对象编程 141

5.2.3网络 144

5.2.4性能 144

5.3 Java虚拟机结构 144

5.3.1数据类型 145

5.3.2数据存储 145

5.3.3Java指令集 147

5.3.4异常和错误 151

5.3.5二进制类 152

5.3.6 Java本地接口 154

5.4完善平台:APIs 155

5.4.1 Java平台 155

5.4.2 Java API 155

5.4.3序列化和反射 156

5.4.4 Java线程 157

5.5微软公共语言基础:一个灵活的高级语言虚拟机 158

5.5.1公共语言接口 158

5.5.2属性 160

5.5.3微软中间语言 161

5.5.4隔离和应用域 162

5.6总结:虚拟ISA的特点 163

5.6.1元数据 163

5.6.2内存结构 163

5.6.3内存地址格式 164

5.6.4精确的异常 164

5.6.5指令集特点 164

5.6.6指令发现 165

5.6.7自修改和自引用代码 165

5.6.8操作系统依赖 165

第6章 高级语言虚拟机实现 166

6.1动态类加载 167

6.2实现安全 168

6.2.1进程内保护 169

6.2.2安全强制执行 171

6.2.3增强的安全模型 172

6.3垃圾收集 173

6.3.1标记清扫收集器 174

6.3.2紧压收集器 175

6.3.3复制收集器 176

6.3.4分代收集器 177

6.3.5增量收集器和并发收集器 177

6.3.6发现根集 178

6.3.7垃圾收集小结 178

6.4Java本地接口 179

6.5基本仿真 180

6.6高性能仿真 180

6.6.1优化框架 181

6.6.2优化 181

6.7案例研究:Jikes RVM 189

6.8总结 193

第7章 协同设计虚拟机 194

7.1存储器和寄存器的状态映射 196

7.2自修改与自引用代码 199

7.3代码cache的支持 200

7.3.1跳转TLB 201

7.3.2双地址的返回地址栈 202

7.4实现精确陷阱 203

7.4.1检查点的硬件支持 203

7.4.2页错误兼容性 205

7.5输入/输出 207

7.6协同设计虚拟机的应用 208

7.7案例研究:Transmeta Crusoe 208

7.8案例研究:IBM AS/400 211

7.8.1存储结构 212

7.8.2指令集 213

7.8.3输入/输出 215

7.8.4处理器资源 215

7.8.5代码翻译和隐藏 215

7.9总结 216

第8章 系统虚拟机 218

8.1关键概念 220

8.1.1外观 220

8.1.2状态管理 221

8.1.3资源控制 222

8.1.4本地虚拟机和宿主虚拟机 224

8.1.5 IBM VM/370 224

8.2资源虚拟化——处理器 225

8.2.1 ISA的虚拟化条件 225

8.2.2递归虚拟化 229

8.2.3处理问题指令 230

8.2.4关键指令的修补 231

8.2.5高速缓存仿真代码 232

8.2.6普通指令集的高效虚拟化 233

8.3资源虚拟化——存储器 234

8.3.1系统虚拟机环境中的虚拟存储器支持 234

8.3.2虚拟化结构化页表 236

8.3.3虚拟化结构化快表 237

8.4资源虚拟化——输入/输出设备 238

8.4.1虚拟化设备 239

8.4.2虚拟化I/O活动 241

8.4.3输入/输出虚拟化和宿主虚拟机 243

8.4.4 VM/370的输入/输出虚拟化 244

8.5系统虚拟机的性能提升方法 245

8.5.1性能下降的原因 245

8.5.2指令仿真辅助手段 246

8.5.3VMM辅助手段 246

8.5.4客户系统的性能提升 247

8.5.5专用系统 249

8.5.6虚拟机的通用支持 250

8.6案例研究:VMware虚拟平台 251

8.6.1处理器虚拟化 253

8.6.2输入/输出虚拟化 254

8.6.3存储器虚拟化 255

8.7案例研究:Intel的VT-X(Vanderpoo1)技术 256

8.7.1技术概述 256

8.7.2技术能力 257

8.7.3状态信息的维护 258

8.7.4例子:rdtsc指令 259

8.8总结 260

第9章 多处理器虚拟化 261

9.1多处理器系统的划分 261

9.1.1动机 261

9.1.2支持划分的机制 264

9.1.3划分技术的分类 265

9.2物理划分 266

9.3逻辑划分 268

9.3.1逻辑划分的主要特征 268

9.3.2案例研究:IBM System 390逻辑划分的特征 269

9.3.3利用超级管理程序进行逻辑划分 271

9.3.4与系统虚拟机的比较 271

9.3.5对逻辑分区的硬件支持 272

9.3.6超级管理程序服务接口 275

9.3.7动态划分 276

9.3.8动态LPAR 277

9.3.9扩充超级管理程序的任务 277

9.4案例研究:Cellular Disco系统虚拟机——基于划分技术 279

9.4.1Cellular Disco系统概述 279

9.4.2存储器映射 280

9.4.3故障隔离 281

9.4.4存储器借用 282

9.4.5故障恢复 283

9.5不同主机与客户ISA的虚拟化 284

9.6总结 291

第10章 新兴应用 292

10.1安全 293

10.1.1入侵检测系统 293

10.1.2攻击的监视和恢复 295

10.1.3虚拟机技术的作用 296

10.1.4动态二进制代码重写在安全性中的角色 300

10.1.5未来的安全系统 303

10.2计算环境的迁移 303

10.2.1虚拟计算机 304

10.2.2利用分布式文件系统:互联网络挂起/恢复模式 305

10.2.3Stanford Co1lective的状态封装 306

10.2.4在VMotion下迁移虚拟机 310

10.3网格:虚拟的组织结构 311

10.3.1理想网格的特性 313

10.3.2网格计算模型仿真:Globus工具集 315

10.3.3比较传统虚拟机 315

10.3.4回到原地:在传统虚拟机系统上实现网格 317

10.3.5结论 320

10.4总结 320

附录A 实际机器 321

参考文献 357

索引 370