首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PAE转换x86中的虚拟内存

使用PAE转换x86中的虚拟内存
EN

Stack Overflow用户
提问于 2019-01-12 08:39:49
回答 1查看 239关注 0票数 0

为什么从虚拟内存地址到具有三级分页(2-9-9-12,4K分页)的物理地址的转换需要在计算下一个分页索引之前将每个分页索引乘以8?

例如,如果我有虚拟地址: 0xabde203 (二进制地址: 1010 1011 1101 1110 0010 0000 0011)。

第一步是提取由两位- 10表示的“页目录指针表”索引,将其乘以8 => 10000,并将其值与外部表物理地址相加,以找到页目录索引。

在正常的x86虚拟转换中,我知道分页是通过两级分页( 10 -10-12)完成的,因此将每个索引(由10位表示)乘以4 (2位)将等于页大小。

但是当使用PAE时,为什么要乘以8,这是如何表示页目录表的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-12 14:33:26

在传统的32位分页中,每个页面目录项和每个页表项都是4个字节,因此索引是4倍的。在PAE和64位分页中,每个表项是8个字节,所以索引是8倍的。

1024个4字节的条目适合4KB的页面,因此在两级分页中,每个索引是10位。512个8字节的条目适合4KB的页面,因此在PAE中,每个索引是9位。

你关于4*2^10是4K的观察是恰当的。8*2^9也是4K。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54155786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档