展开全部

主编推荐语

百度主任架构师和百度云副总裁5年两易其稿,从CPU、内存、中断、外设、网络5维度深入讲解Linux系统虚拟化。

内容简介

这是一部深度讲解如何在Linux操作系统环境下用软件虚拟出一台“物理”计算机的著作。

两位作者都是百度的资深技术专家,一位是百度的主任架构师,一位是百度智能云的副总经理,都在操作系统和虚拟化等领域有多年的实践经验。

本书从计算机体系结构、操作系统、硬件等多个方面深度探索了如何从CPU、内存、中断、外设、网络5个维度去虚拟化Linux系统,不仅剖析了其中的关键技术原理,而且深入阐述了具体的实现。

目录

  • 版权信息
  • 前言
  • 第1章 CPU虚拟化
  • 1.1 x86架构CPU虚拟化
  • 1.1.1 陷入和模拟模型
  • 1.1.2 x86架构虚拟化的障碍
  • 1.1.3 VMX
  • 1.1.4 VCPU生命周期
  • 1.2 虚拟机切入和退出
  • 1.2.1 GCC内联汇编
  • 1.2.2 虚拟机切入和退出及相关的上下文保存
  • 1.3 陷入和模拟
  • 1.3.1 访问外设
  • 1.3.2 特殊指令
  • 1.3.3 访问具有副作用的寄存器
  • 1.4 对称多处理器虚拟化
  • 1.4.1 MP Table
  • 1.4.2 处理器启动过程
  • 1.5 一个简单KVM用户空间实例
  • 1.5.1 创建虚拟机实例
  • 1.5.2 创建内存
  • 1.5.3 创建处理器
  • 1.5.4 Guest
  • 1.5.5 加载Guest镜像到内存
  • 1.5.6 运行虚拟机
  • 第2章 内存虚拟化
  • 2.1 内存寻址
  • 2.1.1 段式寻址
  • 2.1.2 平坦内存模型
  • 2.1.3 页式寻址
  • 2.1.4 页式寻址实例
  • 2.2 VMM为Guest准备物理内存
  • 2.2.1 内核是如何获取内存的
  • 2.2.2 建立内存段信息
  • 2.2.3 准备中断0x15的处理函数以及设置IVT
  • 2.2.4 中断0x15的处理函数实现
  • 2.2.5 虚拟内存条
  • 2.3 实模式Guest的寻址
  • 2.3.1 设置CPU运行于Virtual-8086模式
  • 2.3.2 设置Guest模式下的cr3寄存器
  • 2.3.3 虚拟MMU的上下文
  • 2.3.4 缺页异常处理
  • 2.4 保护模式Guest的寻址
  • 2.4.1 偷梁换柱cr3
  • 2.4.2 影子页表缺页异常处理
  • 2.5 EPT
  • 2.5.1 设置EPT页表
  • 2.5.2 EPT异常处理
  • 2.5.3 EPT支持下的地址翻译过程
  • 第3章 中断虚拟化
  • 3.1 虚拟中断
  • 3.2 PIC虚拟化
  • 3.2.1 可编程中断控制器8259A
  • 3.2.2 虚拟设备向PIC发送中断请求
  • 3.2.3 记录中断到IRR
  • 3.2.4 设置待处理中断标识
  • 3.2.5 中断评估
  • 3.2.6 中断ACK
  • 3.2.7 关于EOI的处理
  • 3.2.8 中断注入
  • 3.3 APIC虚拟化
  • 3.3.1 外设中断过程
  • 3.3.2 核间中断过程
  • 3.3.3 IRQ routing
  • 3.4 MSI(X)虚拟化
  • 3.4.1 MSI(X)Capability数据结构
  • 3.4.2 建立IRQ routing表项
  • 3.4.3 MSI设备中断过程
  • 3.5 硬件虚拟化支持
  • 3.5.1 虚拟中断寄存器页面(virtual-APIC page)
  • 3.5.2 Guest模式下的中断评估逻辑
  • 3.5.3 posted-interrupt processing
  • 第4章 设备虚拟化
  • 4.1 设备虚拟化模型演进
  • 4.2 PCI配置空间及其模拟
  • 4.3 设备透传
  • 4.3.1 虚拟配置空间
  • 4.3.2 DMA重映射
  • 4.3.3 中断重映射
  • 4.4 完全虚拟化
  • 4.4.1 Guest发送数据
  • 4.4.2 Guest接收数据
  • 第5章 Virtio虚拟化
  • 5.1 I/O栈
  • 5.1.1 文件系统
  • 5.1.2 通用块层
  • 5.1.3 块设备驱动
  • 5.1.4 page cache
  • 5.1.5 bio
  • 5.1.6 I/O调度器
  • 5.2 Virtio协议
  • 5.2.1 描述符表
  • 5.2.2 可用描述符区域
  • 5.2.3 已用描述符区域
  • 5.2.4 Virtio设备的PCI配置空间
  • 5.3 初始化Virtqueue
  • 5.4 驱动根据I/O请求组织描述符链
  • 5.5 驱动通知设备处理请求
  • 5.6 设备处理I/O请求
  • 5.7 驱动侧回收I/O请求
  • 5.8 设备异步处理I/O
  • 5.9 轻量虚拟机退出
  • 5.9.1 创建eventfd
  • 5.9.2 kvmtool监听eventfd
  • 5.9.3 VM exit处理函数唤醒I/O任务
  • 第6章 网络虚拟化
  • 6.1 基于Overlay的虚拟网络方案
  • 6.1.1 计算节点
  • 6.1.2 网络节点
  • 6.1.3 Open vSwitch
  • 6.2 虚拟机访问外部主机
  • 6.2.1 数据包在计算节点Linux网桥中的处理
  • 6.2.2 数据包在计算节点的Open vSwitch中的处理
  • 6.2.3 数据包在网络节点的Open vSwitch中的处理
  • 6.3 外部主机访问虚拟机
  • 6.3.1 数据包在网关中的处理过程
  • 6.3.2 数据包在网络节点的Open vSwitch中的处理
  • 6.3.3 数据包在计算节点的Open vSwitch中的处理
  • 6.3.4 数据包在Linux网桥中的处理
展开全部

评分及书评

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

    本书前半部分的总体框架,概念介绍是 KVM 很好的入门内容。后半部分的例子细节很多,但另一方面看略显细碎。

      转发
      评论

    出版方

    机械工业出版社有限公司

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