内容简介
本书对云计算中关键技术之一的虚拟化技术进行了深入的分析,从x86计算机体系结构以及操作系统的工作原理出发,介绍了虚拟化技术原理以及业界主流虚拟化软件产品,并以Xen、KVM开源软件为例分析了虚拟化软件的架构及其实现方法,对虚拟化软件管理接口的工作原理以及实现方法进行了全面的梳理。
目录
目 录
目录
第一篇 云计算与虚拟化技术
第1章 虚拟化技术基本原理 2
1.1 云计算与虚拟化技术 3
1.2 x86和非x86体系结构基础 4
1.2.1 x86的发展历程 4
1.2.2 x86-64 6
1.2.3 x86内存架构 7
1.2.4 x86-64的基本模式 23
1.2.5 x86-64的寄存器组 25
1.2.6 中断与异常 26
1.2.7 I/O架构 31
1.2.8 DMA 32
1.2.9 时钟 33
1.3 操作系统与虚拟化 34
1.3.1 操作系统 35
1.3.2 进程 35
1.3.3 系统虚拟化 38
1.3.4 系统虚拟化的发展历程 39
1.3.5 可虚拟化条件 41
1.3.6 虚拟化的原理与分类 43
1.4 VMM技术架构分类 45
1.4.1 Hypervisor模型 46
1.4.2 宿主(Hosted)模型 47
1.4.3 混合模型 48
1.5 本章小结 49
第2章 虚拟化实现技术架构 50
2.1 处理器虚拟化实现技术 52
2.1.1 Intel VT 53
2.1.2 AMD SVM 55
2.1.3 vCPU 55
2.2 中断虚拟化实现技术 56
2.3 内存虚拟化实现技术 58
2.3.1 影子页表 60
2.3.2 Intel EPT 65
2.3.3 AMD NPT 67
2.4 I/O设备虚拟化实现技术 68
2.4.1 Intel VT-d 69
2.4.2 DMA重映射 70
2.4.3 I/O页表 73
2.4.4 AMD IOMMU 74
2.5 网络虚拟化技术 76
2.5.1 虚拟通道 77
2.6 时间虚拟化技术 79
2.6.1 操作系统和客户机的时间概念 79
2.6.2 客户机时间概念的实现 82
2.7 主流虚拟化产品及其特点 84
2.7.1 Xen 84
2.7.2 VMware 86
2.7.3 Hyper –V 87
2.7.4 KVM 88
2.8 本章小结 90
第二篇 Xen虚拟化技术篇
第3章 Xen软件系统原理 92
3.1 Xen软件模块结构 93
3.1.1 Xen Hypervisor 93
3.1.2 特权虚拟域0(Dom0) 94
3.1.3 独立设备驱动域(IDD) 95
3.1.4 非特权虚拟域U(DomU) 96
3.1.5 硬件虚拟域(HVM) 96
3.2 Xen系统启动工作原理及流程 96
3.2.1 系统引导过程 97
3.2.2 Hypervisor启动与初始化过程 98
3.2.3 Dom0启动过程 99
3.2.4 DomU的启动 99
3.3 Xen CPU虚拟化工作原理 100
3.3.1 x86体系虚拟化存在的问题 100
3.3.2 CPU虚拟化—半虚拟化(又称为泛虚拟化) 102
3.3.3 CPU虚拟化技术—硬件虚拟化技术支持的全虚拟化 103
3.4 Xen内存虚拟化工作原理 105
3.4.1 内存虚拟化—直接模式 106
3.4.2 内存虚拟化—影子模式 107
3.5 I/O虚拟化工作原理 108
3.5.1 半虚拟化I/O 108
3.5.2 全虚拟化I/O 109
3.6 Xen虚拟机(DomU)生命周期管理 110
3.7 本章小结 112
第4章 Xen Hypervisor技术实现 113
4.1 Xen Hypervisor关键技术概述 114
4.2 Hypercall 114
4.2.1 Hypercall的实现机制 115
4.2.2 自定义Hypercall的方法 118
4.2.3 应用程序使用Hypercall的方法 120
4.3 事件通道 121
4.3.1 事件通道的初始化 121
4.3.2 事件通道的绑定 122
4.3.3 发送事件通知 136
4.3.4 事件通知的处理 138
4.4 数据共享 142
4.4.1 授权表(Grant table) 142
4.4.2 XenStore和XenBus 146
4.4.3 分离设备驱动 149
4.5 本章小结 154
第三篇 KVM虚拟化技术篇
第5章 qemu-kvm虚拟化解决方案 156
5.1 概述 157
5.2 内核模块组成概述 158
5.3 KVM所提供的API 162
5.4 KVM内核模块重要的数据结构 168
5.4.1 KVM结构体 168
5.4.2 kvm_vcpu结构体 169
5.4.3 kvm_x86_ops结构体 169
5.4.4 KVM API中重要的结构体 171
5.5 KVM内核模块重要流程