虚拟地址转换物理地址的相关问题

PAE:

如何开启/关闭PAE

CMD 命令:
开启: bcdedit /set pae forceenable

bcdedit /set {current} nx OptIn

关闭: bcdedit /set pae forcedisable

bcdedit /set {current} nx AlwaysOff
查看: bcdedit 可以看见修改后的状态

一、未开启PAE

Win32通过一个两层表结构来实现地址映射,因为4 GB虚拟地址空间为每个进程私有,相应地,每个进程都维护一套自己的层次表结构用来实现其地址映射。

第一层表称为"页目录"(page directory),实际上本身也是一个内存页(4 KB = 4096 byte)。这一页以四个字节为单元分为1024项,每一项称为一个"页目录项"(Page Directory Entry,PDE)指向一个新的内存页

第二层表称为"页表"(page table),共有1024个页表。页目录中每一个页目录项PDE对应这一层中的某一个页表,每一个页表也占了一个内存页。这一页中的4 KB,即4096个字节也像页目录那样被分成1024项,每项4个字节,页表的每一项则称为"页表项"(Page Table Entry,PTE)。每一个页表项PTE都指向物理内存中的某一个页帧

页表已经知道,Win32提供了4 GB(32位)大小的虚拟地址空间。因此每个虚拟地址都是一个32位的整数值,这32位由三个部分组成

10位:(3122)页目录表索引
10位:(2112)页表索引
12位:(110 页内偏移

虚拟地址转换物理地址的相关问题

虚拟地址转换物理地址的相关问题

 

 

二、开启PAE

启用PAE(通过设置控制暂存器CR4的第5位来启用)会改变上面的方案。默认情况下,每页的大小是4KiB的。页表和页目录中的表项都从32位扩为64位(8字节)以使用附加的地址位。但是,页表和页目录的总大小不变。所以,页表和页目录现在都只有512个表项。因为这变成了原来方案的一半,所以另外的一个级加了进来:CR3现在指向的是页目录指针表,即一个包含4个页目录指针的表。
VA为
2位:(30—31)页目录指针表的索引
9位:(21—29)页目录表索引
9位:(12—20)页表索引
12位:(0—11)页内偏移

 

虚拟地址转换物理地址的相关问题

 

虚拟地址转换物理地址的相关问题