内容简介 这是一部深度讲解如何在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章 网络虚拟化 讨论了在通用硬件网络的基础上,操作系统如何虚拟出专用的网络设备,为租户组建虚拟网络。