更新时间:2020-11-04 16:47:34
封面
版权信息
前言
第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请求