因为虚拟化引入了额外级别的内存映射,所以 ESXi可以跨所有虚拟机来管理内存。

虚拟机的一些物理内存可能映射到共享页面或未映射或换出的页面。

主机执行虚拟内存管理时无需了解客户机操作系统,也不会干涉客户机操作系统自身的内存管理子系统。

每个虚拟机的 VMM 保持了从客户机操作系统的物理内存页到基础计算机上物理内存页的映射。(VMware 将基础主机物理页称为“计算机”页,将客户机操作系统的物理页称为“物理”页。)

每个虚拟机均有连续的可寻址物理内存空间,该空间从零开始。每个虚拟机使用的服务器上的基础计算机内存不一定是连续的。

客户机虚拟地址到客户机物理地址的转换由客户机操作系统管理。管理程序仅负责将客户机物理地址转换为计算机地址。硬件辅助的内存虚拟化将利用硬件设施生成具有由管理程序维护的客户机页表和嵌套页表的组合映射。

该图说明了 ESXi如何实施内存虚拟化。

图 1. ESXi内存映射

此图说明了如何实施内存虚拟化。
  • 方框表示页,而箭头表示不同的内存映射。
  • 从客户机虚拟内存到客户机物理内存的箭头表示客户机操作系统中的页表所保持的映射。(未显示 x86 架构处理器从虚拟内存到线性内存的映射。)
  • 从客户机物理内存到计算机内存的箭头表示由 VMM 保持的映射。
  • 虚线箭头表示从客户机虚拟内存到计算机内存的映射,该映射也由 VMM 保持。运行虚拟机的基础处理器使用卷影页表映射。