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 VTx硬件辅助虚拟化概述0 2.2.1VMX操作模式0 2.2.2VMCS0 2.2.3PIC & APIC0 2.2.4Intel VTx中断虚拟化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.6SRIOV 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.1VMSAv864架构概述 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缩略语