影子页表

在虚拟环境下的内存地址有以下种类(见图5-13)。

·客户端虚拟地址—从客户端操作系统上看到的虚拟地址。

·客户端物理地址—从客户端操作系统上看到的物理地址。管理程序仿真的模拟物理地址。·主机虚拟地址—从主机操作系统上看到的虚拟地址。

·主机物理地址—从主机操作系统上看到的物理地址。与实际的物理地址相同。在虚拟化环境下有时也称为机器地址(绝对地址)。

在虚拟化环境下,不能由客户端操作系统来管理物理地址,因此客户端物理地址就是管理程序仿真的模拟地址。但使用这个客户端物理地址是无法访问实际的内存的,因此需要转换成主机物理地址。在Xen或KVM中,管理程序通过影子分页(shadow page table)的方法进行MMU的仿真。如图5-14所示,在影子分页中,管理程序先检测出客户端操作系统的页表配置处理方式,再仿真客户端操作系统的页表配置处理方式。管理程序会设置将客户端虚拟地址转换为主机物理地址的表。这个表称为影子表。管理程序将影子表设置为CPU的CR3寄存器。从而MMU就可以将客户端操作系统访问的客户端虚拟地址转换为主机物理地址。

影子页表 - 图1

图 5-13 4种地址

影子页表 - 图2

图 5-14 影子分页