背景
- Read the fucking source code! --By 鲁迅
- A picture is worth a thousand words. --By 高尔基
说明:
- KVM版本:5.9.1
- QEMU版本:5.0.0
- 工具:Source Insight 3.5, Visio
1. 概述
《Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化》文中描述过内存虚拟化大体框架,再来回顾一下:
- 非虚拟化下的内存的访问
- CPU访问物理内存前,需要先建立页表映射(虚拟地址到物理地址的映射),最终通过查表的方式来完成访问。在ARMv8中,内核页表基地址存放在TTBR1_EL1中,用户空间页表基地址存放在TTBR0_EL0中;
- 虚拟化下的内存访问
- 虚拟化情况下,内存的访问会分为两个Stage,Hypervisor通过Stage 2来控制虚拟机的内存视图,控制虚拟机是否可以访问某块物理内存,进而达到隔离的目的;
- Stage 1:VA(Virtua