了解页面目录

时间:2017-11-15 15:11:48

标签: assembly memory-management x86 paging

我阅读了一些关于页面目录和页面表的手册,但仍然对这些概念感到困惑。例如here我发现只进行单级分页会浪费内存。所以在x86架构中我们使用2级分页。

cr3 --> PageDirectory --> PageTable --> Page

因此请考虑以下线性地址。

01001010101 1010101101 10101110101010 
 page tbl     page      offset

使用page tbl位,我们找到页面目录条目的物理地址。 PD = cr3 + L * (page tbl),其中包含页面表实际地址PT。现在我们正在寻找我们的页面P = PT + L * page。所以在单一级别我们有一个页面表4MiB。现在我们有1024个页面表4KiB = 4MiB。不要看记忆经济。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

通常,页面表远未完整。使用平面页表,如果只需要前几个和最后几个条目,则仍需要分配整个表。使用页面目录,可以省略除第一页和最后一页之外的所有表,从而节省大量内存。在当今庞大的RAM时代,收益似乎很小,但是当计算机总共只有4 MiB的RAM时,它确实很多。