我阅读了一些关于页面目录和页面表的手册,但仍然对这些概念感到困惑。例如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。不要看记忆经济。
我错过了什么?
答案 0 :(得分:3)
通常,页面表远未完整。使用平面页表,如果只需要前几个和最后几个条目,则仍需要分配整个表。使用页面目录,可以省略除第一页和最后一页之外的所有表,从而节省大量内存。在当今庞大的RAM时代,收益似乎很小,但是当计算机总共只有4 MiB的RAM时,它确实很多。