展开全部

主编推荐语

深入剖析系统虚拟化方案QEMU/KVM代码实现,全方位探究系统虚拟化中涉及的各种技术细节。

内容简介

《QEMU/KVM源码解析与应用》从源码层面对当今重要的虚拟化方案QEMU与KVM的实现进行了详细分析。涉及的源码包括QEMU程序的基本组成与重要组件、主板与固件虚拟化、CPU虚拟化、内存虚拟化、中断虚拟化、设备虚拟化等。

本书的内容以QEMU和KVM代码分析为主,也涉及其他与虚拟化密切相关的代码,例如SeaBIOS和Linux内核中的virtio与VFIO的驱动代码。对虚拟化安全、容器与安全容器技术、虚拟化技术的下一步发展也做了简单介绍。

《QEMU/KVM源码解析与应用》可供从事云计算,特别是从事IaaS层相关工作的人员阅读和使用,也适合对底层计算机系统、虚拟机技术、操作系统技术感兴趣的读者学习和使用。虚拟化技术如今已经广泛应用于安全领域,本书还可供安全研究人员参考和使用。

目录

  • 版权信息
  • 出版说明
  • 前言
  • 第1章 QEMU与KVM概述
  • 1.1 虚拟化简介
  • 1.1.1 虚拟化思想
  • 1.1.2 虚拟机简介
  • 1.1.3 系统虚拟化的历史
  • 1.2 QEMU与KVM架构介绍
  • 1.2.1 QEMU与KVM历史
  • 1.2.2 QEMU与KVM架构
  • 1.3 KVM API使用实例
  • 第2章 QEMU基本组件
  • 2.1 QEMU事件循环机制
  • 2.1.1 glib事件循环机制
  • 2.1.2 QEMU中的事件循环机制
  • 2.1.3 QEMU自定义事件源
  • 2.1.4 QEMU事件处理过程
  • 2.1.5 QEMU主循环监听的fd解析
  • 2.2 QEMU线程模型
  • 2.2.1 QEMU线程模型简介
  • 2.2.2 QEMU线程介绍
  • 2.3 QEMU参数解析
  • 2.4 QOM介绍
  • 2.4.1 类型的注册
  • 2.4.2 类型的初始化
  • 2.4.3 类型的层次结构
  • 2.4.4 对象的构造与初始化
  • 2.4.5 属性
  • 2.5 hmp与qmp介绍
  • 2.5.1 hmp与qmp
  • 2.5.2 qmp的使用
  • 2.5.3 qmp源码分析
  • 2.5.4 qmp命令添加
  • 第3章 主板与固件模拟
  • 3.1 Intel 440FX主板简介
  • 3.1.1 i440fx与piix3介绍
  • 3.1.2 QEMU模拟主板架构
  • 3.2 QEMU的主板模拟与初始化
  • 3.2.1 虚拟机初始化
  • 3.2.2 i440fx初始化
  • 3.2.3 中断和其他设备的初始化
  • 3.3 fw_cfg设备介绍
  • 3.3.1 fw_cfg设备的初始化
  • 3.3.2 向fw_cfg设备添加数据
  • 3.3.3 添加用户自定义数据
  • 3.3.4 数据的读取
  • 3.4 SeaBIOS分析
  • 3.4.1 SeaBIOS简介
  • 3.4.2 QEMU加载SeaBIOS
  • 3.4.3 SeaBIOS源码结构
  • 3.4.4 SeaBIOS的编译与调试
  • 第4章 CPU虚拟化
  • 4.1 CPU虚拟化介绍
  • 4.1.1 CPU虚拟化简介
  • 4.1.2 VMX架构简介
  • 4.1.3 VMCS介绍
  • 4.2 KVM模块初始化介绍
  • 4.2.1 KVM源码组织
  • 4.2.2 KVM模块初始化
  • 4.3 虚拟机的创建
  • 4.3.1 QEMU侧虚拟机的创建
  • 4.3.2 KVM侧虚拟机的创建
  • 4.4 QEMU CPU的创建
  • 4.4.1 CPU模型定义
  • 4.4.2 CPU对象的初始化
  • 4.4.3 CPU的创建
  • 4.5 KVM CPU的创建
  • 4.5.1 KVM创建VCPU流程
  • 4.5.2 QEMU与KVM之间的共享数据
  • 4.5.3 VCPU CPUID构造
  • 4.6 VCPU的运行
  • 4.7 VCPU的调度
  • 第5章 内存虚拟化
  • 5.1 内存虚拟化简介
  • 5.2 QEMU内存初始化
  • 5.2.1 基本结构
  • 5.2.2 QEMU虚拟机内存初始化
  • 5.2.3 分配虚拟机RAM过程
  • 5.3 内存布局的提交
  • 5.3.1 内存更改通知
  • 5.3.2 虚拟机内存平坦化过程
  • 5.3.3 向KVM注册内存
  • 5.4 内存的分派
  • 5.4.1 内存分派表的构建
  • 5.4.2 页表简化
  • 5.4.3 地址分派
  • 5.5 KVM内存虚拟化
  • 5.5.1 虚拟机MMU初始化
  • 5.5.2 虚拟机物理地址的设置
  • 5.5.3 EPT页表的构建
  • 5.6 MMIO机制
  • 5.6.1 虚拟设备MMIO实现原理
  • 5.6.2 coalesced MMIO
  • 5.7 虚拟机脏页跟踪
  • 第6章 中断虚拟化
  • 6.1 中断机制简介
  • 6.1.1 中断分发方式
  • 6.1.2 中断线与中断向量
  • 6.2 中断模拟
  • 6.2.1 虚拟化环境下的中断注入
  • 6.2.2 PIC中断模拟
  • 6.2.3 I/O APIC中断模拟
  • 6.2.4 MSI中断模拟
  • 6.3 APIC虚拟化
  • 6.3.1 APICv简介
  • 6.3.2 APICv源码分析
  • 第7章 设备虚拟化
  • 7.1 设备虚拟化简介
  • 7.1.1 总线数据类型
  • 7.1.2 总线的创建
  • 7.1.3 设备数据类型
  • 7.1.4 设备的创建
  • 7.1.5 设备的树形结构
  • 7.2 PCI设备模拟
  • 7.2.1 PCI设备简介
  • 7.2.2 PCI设备的模拟
  • 7.2.3 PCI设备中断模拟
  • 7.3 设备模拟后端
  • 7.3.1 网卡模拟介绍
  • 7.3.2 网卡参数解析
  • 7.3.3 前端网卡设备的创建
  • 7.3.4 虚拟机网卡发包流程
  • 7.3.5 虚拟机网卡接收数据包
  • 7.4 virtio设备模拟
  • 7.4.1 virtio简介
  • 7.4.2 virtio设备的初始化
  • 7.4.3 virtio驱动的加载
  • 7.4.4 virtio驱动的初始化
  • 7.4.5 virtio设备与驱动的通信
  • 7.5 ioeventfd和irqfd
  • 7.5.1 eventfd原理
  • 7.5.2 ioeventfd
  • 7.5.3 irqfd
  • 7.6 vhost net简介
  • 7.6.1 vhost net介绍
  • 7.6.2 vhost的初始化
  • 7.6.3 vhost net网络模块
  • 7.6.4 vhost net的启动
  • 7.6.5 vhost net的收发包
  • 7.7 设备直通与VFIO
  • 7.7.1 VFIO简介
  • 7.7.2 VFIO相关内核模块分析
  • 7.7.3 VFIO与设备直通
  • 第8章 虚拟化杂项
  • 8.1 QEMU Guest Agent
  • 8.1.1 QEMU Guest Agent的使用
  • 8.1.2 qga源码分析
  • 8.1.3 qga的QEMU侧源码解析
  • 8.2 QEMU虚拟机热迁移
  • 8.2.1 热迁移的用法与基本原理
  • 8.2.2 热迁移流程分析
  • 8.2.3 热迁移中的脏页同步
  • 8.2.4 热迁移中的相关参数控制
  • 8.3 QEMU及虚拟化安全
  • 8.3.1 QEMU软件安全
  • 8.3.2 QEMU安全思考
  • 8.4 容器与虚拟化
  • 8.4.1 Docker容器
  • 8.4.2 gVisor
  • 8.4.3 nemu
  • 8.4.4 crosvm、Firecracker与cloud-hypervisor
  • 附录 重要术语
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    4.0
    很详细!

    QEMU KVM 作为开源的虚拟化技术,给我们提供了绝佳的了解和学习虚拟化的机会。笔者在 2013 年左右接触到虚拟化技术,随即被 QEMU KVM 吸引,并且持续地学习其背后的设计思想与源码实现。在此之前,笔者所从事的行业为软件安全,虽然对软件的运行机制有比较透彻的理解,但是对于系统加电到程序运行中间的过程认知还仅限于书本。在充分学习了虚拟化技术之后,笔者总算能够站在一个比较高的角度来审视计算机系统并对种种假设进行验证。虚拟机作为物理机的映射,很大程度上还原了物理计算机系统中那些难为人知的奥秘。技术的发展日新月异,对于事物本质的理解会让我们更加自信。

      转发
      评论

    出版方

    机械工业出版社

    机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。