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

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)页内偏移

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值