CONTENTS

目录

第1章系统虚拟化概述00

1.1系统虚拟化基本概念00

1.2系统虚拟化的发展历史和趋势展望00

1.2.1发展历史00

1.2.2趋势展望0

1.3系统虚拟化的主要功能和分类0

1.3.1虚拟化基本功能0

1.3.2虚拟化分类0

1.3.3系统虚拟化实现方式0

1.4典型虚拟化系统0

1.4.1典型虚拟化系统简介0

1.4.2openEuler的虚拟化技术0

本章小结0

第2章CPU虚拟化0

2.1CPU虚拟化概述0

2.1.1敏感非特权指令的处理0

2.1.2虚拟机上下文切换0

2.1.3中断虚拟化0

2.2Intel VTx硬件辅助虚拟化概述0

2.2.1VMX操作模式0

2.2.2VMCS0

2.2.3PIC & APIC0

2.2.4Intel VTx中断虚拟化0

2.3QEMU/KVM CPU虚拟化实现0

2.3.1KVM模块初始化0

2.3.2虚拟机创建0

2.3.3vCPU创建0

2.3.4vCPU运行0

2.3.5实验:CPU虚拟化实例0

2.4QEMU/KVM中断虚拟化实现0

2.4.1PIC & IOAPIC模拟0

2.4.2PCI设备中断0

2.4.3QEMU/KVM中断路由0

2.4.4虚拟中断注入0

2.4.5实验:e1000网卡中断虚拟化0

2.5GiantVM CPU虚拟化0

2.5.1分布式vCPU0

2.5.2跨节点中断转发0

本章小结0





第3章内存虚拟化

3.1内存虚拟化概述

3.2内存虚拟化的实现

3.2.1虚拟内存的实现:页表

3.2.2内存虚拟化的软件实现:影子页表

3.2.3内存虚拟化的硬件支持:扩展页表

3.2.4扩展页表与影子页表的结合:敏捷页表

3.2.5内存的半虚拟化:直接页表映射与内存气球

3.3QEMU/KVM内存虚拟化源码

3.3.1QEMU内存数据结构

3.3.2实验:打印MemoryRegion树

3.3.3KVM内存数据结构

3.3.4实验:将GVA翻译为HPA

3.4GiantVM内存虚拟化

3.4.1分布式共享内存

3.4.2GiantVM中的DSM架构

3.4.3GiantVM中DSM的实现

本章小结

第4章I/O虚拟化

4.1I/O虚拟化概述

4.1.1I/O过程

4.1.2I/O虚拟化的基本任务

4.1.3软件实现的I/O虚拟化

4.1.4硬件辅助的I/O虚拟化

4.2I/O虚拟化的实现方式

4.2.1PCI设备简介

4.2.2设备模拟

4.2.3I/O半虚拟化

4.2.4设备直通访问

4.2.5VFIO

4.2.6SRIOV

4.3QEMU/KVM虚拟设备的实现

4.3.1QEMU对象模型

4.3.2主板芯片组与总线模拟

4.3.3QEMU/KVM设备访问的模拟

4.3.4实验:为edu设备添加设备驱动

4.4GiantVM中的I/O处理

4.4.1PIO 转发

4.4.2MMIO 转发

4.4.3DMA 的处理

本章小结

第5章鲲鹏虚拟化

5.1鲲鹏虚拟化框架

5.1.1鲲鹏虚拟化简介

5.1.2EL2虚拟化框架

5.2鲲鹏CPU虚拟化

5.2.1CPU虚拟化

5.2.2EL2异常级

5.2.3VHE

5.3鲲鹏中断虚拟化

5.3.1GICv1

5.3.2GICv2

5.3.3GICv3/GICv4

5.3.4GICv3/GICv4中断虚拟化

5.4鲲鹏内存虚拟化

5.4.1VMSAv864架构概述

5.4.2地址空间与页表

5.4.3内存属性、访问权限与缺页异常

5.4.4MPAM

5.5鲲鹏I/O虚拟化

5.5.1MMIO的模拟

5.5.2DMA重映射——SMMUv3

5.5.3SMMUv3中的缓存机制

5.6鲲鹏时钟虚拟化

本章小结

第6章轻量级虚拟化平台StratoVirt

6.1StratoVirt概述

6.2发展背景

6.3StratoVirt架构设计

6.3.1CPU子系统

6.3.2内存子系统

6.3.3I/O子系统

6.4从零开始构建StratoVirt

6.4.1总体介绍

6.4.2KVM模型

6.4.3内存模型

6.4.4CPU模型

6.4.5BootLoader实现

6.4.6串口实现

6.4.7Epoll实现

6.4.8鲲鹏平台支持

本章小结

参考文献

附录A缩略语