Operating system Can';不理解页面地址扩展的过程

Operating system Can';不理解页面地址扩展的过程,operating-system,Operating System,我试图弄清楚页面地址扩展是如何工作的,并阅读了维基百科中的一些参考资料,最后的图片是PAE的经典结构。但我还是不明白为什么这能奏效 以下是我的问题 Dir.pointer条目的大小是多少?32位 有人能解释一下PAE将32位虚拟地址映射到36位物理地址的细节吗 (Q1):每个目录指针条目是64位的,这些条目与页面目录条目和页面表条目大致共享相同的布局。大致上,这是因为尽管它共享布局,但保护和内存类型位的解释却截然不同 在经典的32位+PAE中,cr3寄存器包含第31..5位中第一个目录指针项的物

我试图弄清楚页面地址扩展是如何工作的,并阅读了维基百科中的一些参考资料,最后的图片是PAE的经典结构。但我还是不明白为什么这能奏效

以下是我的问题

  • Dir.pointer条目的大小是多少?32位

  • 有人能解释一下PAE将32位虚拟地址映射到36位物理地址的细节吗

  • (Q1):每个目录指针条目是64位的,这些条目与页面目录条目和页面表条目大致共享相同的布局。大致上,这是因为尽管它共享布局,但保护和内存类型位的解释却截然不同

    在经典的32位+PAE中,cr3寄存器包含第31..5位中第一个目录指针项的物理地址。忽略位4..0,但可能应为零。4个目录指针的集合必须是32字节对齐的。由于此寄存器的大小有限,此目录指针表必须位于较低的4G地址空间中

    在p(DP | PD | PT)条目内,这些位的布局如下:

    63 -- no execute ( this page cannot execute )
    62..M -- must be zero (later ignored).
    (M-1)..12 -- upper M-12 bits of physical address
    11..0 -- protection, size and type bits.
    
    M是lg(最大物理地址),它可以是运行时确定的值

    (Q2):因此,当处理器找到对应于虚拟地址V的(4k)页表条目时,它会发出:

     (v & 0xfff) | ((PTE (M-1)..12) << 12)
    
    (v&0xfff)|((PTE(M-1)…12)
    
     (v & 0xfffff) | ((PDE (-1)..20) << 20)