内存虚拟化

虚拟机管理器(VMM)负责管理和分配每个虚拟机的物理内存。虚拟机操作系统看到的是一个虚构的虚拟机物理地址空间。操作系统的内存管理模块负责将虚拟机虚拟地址(GVA)映射到虚拟机物理地址(GPA),其指令目标地址也是一个虚拟机物理地址。这样的地址在无虚拟化情况下,其实是实际物理地址。但在有虚拟化情况下,这样的地址不能被直接处理使用,需VMM先将虚拟机物理地址转换成一个主机物理地址(HPA),再交由物理处理器执行。

由于引入虚拟机物理地址空间,内存虚拟化主要处理以下两方面问题:
  • 维护虚拟机物理地址到宿主机物理地址之间的映射关系。
  • 当虚拟机访问虚拟机物理地址时,根据映射关系,将其转换成宿主机物理地址。
如图 1所示:
图 1. GVA->GPA->HPA


内存的硬件辅助虚拟化使用扩展页表(EPT)技术,通过硬件完成虚拟机虚拟地址到主机物理地址的转换。

如图 2所示:
图 2. EPT页表