
深度探索Linux系统虚拟化:原理与实现
百度主任架构师和百度云副总裁5年两易其稿
作品简介
这是一部深度讲解如何在Linux操作系统环境下用软件虚拟出一台“物理”计算机的著作。两位作者都是百度的技术专家,一位是百度的主任架构师,一位是百度智能云的副总经理,都在操作系统和虚拟化等领域有多年的实践经验。本书从计算机体系结构、操作系统、硬件等多个方面深度探索了如何从CPU、内存、中断、外设、网络5个维度去虚拟化Linux系统,不仅剖析了其中的关键技术原理,而且深入阐述了具体的实现。
全书共6章:第1章:CPU虚拟化,介绍了X86架构下的VMX扩展,讨论了在VMX下虚拟CPU的完整生命周期,着重阐述了Host和Guest的切换、指令的模拟以及KVM是如何虚拟多处理器的。第2章:内存虚拟化。讨论了操作系统如何为虚拟机呈现物理内存,结合影子页表以及EPT探讨了KVM如何完成从GVA到HPA的2层地址映射。第3章:中断虚拟化。首先,讨论了从单核系统的8259A开始,到多核系统的APIC,再到绕开I/O APIC直接从设备向LAPIC发送基于消息的MSI的虚拟化原理和实现。然后,讨论了Intel为了提高效率,是如何从硬件层面对虚拟化中断进行支持的,以及KVM是如何使用它们的。第4~5章:外设虚拟化。从完全虚拟化开始,依次讲解了半虚拟化(Virtio)和Intel的VT-d支持下的硬件辅助虚拟化。通过实现一个模拟串口带领读者直观体会了设备虚拟化的基本原理,然后深入阐述了Virito标准和实现,以及支持SR-IOV的DMA重映射和中断重映射。第6章:网络虚拟化。讨论了在通用硬件网络的基础上,操作系统如何虚拟出专用的网络设备,为租户组建虚拟网络。
王柏生,技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。著有畅销书《深度探索Linux操作系统》(2013年出版)。
谢广军,计算机专业博士,毕业于南开大学计算机系。技术专家,有多年的IT行业工作经验。现担任百度智能云副总经理,负责云计算相关产品的研发。多年来一直从事操作系统、虚拟化技术、分布式系统、大数据、云计算等相关领域的研发工作,实践经验丰富。
作品目录
前言
第1章 CPU虚拟化
1.1 x86架构CPU虚拟化
1.2 虚拟机切入和退出
1.3 陷入和模拟
1.4 对称多处理器虚拟化
1.5 一个简单KVM用户空间实例
第2章 内存虚拟化
2.1 内存寻址
2.2 VMM为Guest准备物理内存
2.3 实模式Guest的寻址
2.4 保护模式Guest的寻址
2.5 EPT
第3章 中断虚拟化
3.1 虚拟中断
3.2 PIC虚拟化
3.3 APIC虚拟化
3.4 MSI(X)虚拟化
3.5 硬件虚拟化支持
第4章 设备虚拟化
4.1 设备虚拟化模型演进
4.2 PCI配置空间及其模拟
4.3 设备透传
4.4 完全虚拟化
第5章 Virtio虚拟化
5.1 I/O栈
5.2 Virtio协议
5.3 初始化Virtqueue
5.4 驱动根据I/O请求组织描述符链
5.5 驱动通知设备处理请求
5.6 设备处理I/O请求
5.7 驱动侧回收I/O请求
5.8 设备异步处理I/O
5.9 轻量虚拟机退出
第6章 网络虚拟化
6.1 基于Overlay的虚拟网络方案
6.2 虚拟机访问外部主机
6.3 外部主机访问虚拟机