0

我正在尝试从管理程序级别遍历(并打印)进程分页结构。我正在运行的来宾是使用 PAE(物理地址扩展)分页的 32 位操作系统(ubuntu 12.04)。

英特尔手册中的下图显示了使用 PAE 分页时不同结构的详细信息

PAE = 1

我对如何使用这些信息感到困惑:

要访问不同的 PDPTE:我应该使用CR3 + i(包括忽略的位)还是将 CR3 右移 4 位,然后添加一个偏移量(CR3 >> 4) + i

同样对于来自 PDPTE 的页面目录的地址,我知道我应该从条目及其 40 位 (12:51) 中排除标志。但是,对于所有 PDPTE,我只得到 0ed PDE(我使用过CR3 + i)......我曾经kvm_read_guest(vcpu->kvm, cr3 + i, &pdpte, 8)阅读 PDPTE 并kvm_read_guest(vcpu->kvm, (pdpte >> 12) + i, &pde, 8)从 PDPTE 中读取 PDE

如果有人对此有任何解释,我将非常感激:)

4

0 回答 0