在多级分页(OS)中,直到哪个级别我们一直在页表上应用分页

问题描述 投票:0回答:1

在操作系统中,我们有多级分页的概念。我明白了,但我不太明白的是,直到我们继续进行分页?我看到一些文章说继续在页表上应用分页,直到我们可以将其放入(RAM)的一帧中。这是真的吗?

我问过一些人,他们说这是错误的概念。

有人可以澄清这个疑问吗?如果您还可以提供一些提到这一点的标准资源(例如许多大学认可的任何作者的书),则会增加可信度。包含所有案例和解释的答案将不胜感激。

memory-management operating-system paging
1个回答
0
投票

多级分页系统中的级数由虚拟地址空间的大小、页面大小和系统架构决定。理论上,可以根据需要设置任意多个级别来分解虚拟地址空间,但实际上,该数量受到性能和架构约束的限制。

我们可以为此想出一个公式 分页级别数 = 虚拟地址中的位数 / 页表索引的位数

-对于 32 位架构: 您有一个 32 位虚拟地址空间和 4 KB 的页面大小(即 2^12 字节)。剩下 20 位用于页表索引。 如果每个页表条目为 4 个字节,则页表可以容纳 2^10 (1024) 个条目。 您可以将 20 位地址空间划分为两个 10 位字段,因此 2 级分页方案有效。

对于页面大小为 4 KB 的 64 位系统,有 52 位用于页表索引(总共 64 位减去页面偏移量的 12 位)。

如果页表每个表有 512 个条目(每级 9 位,假设每个页表条目 8 个字节),这通常会导致 4 级分页方案,因为 52 位可以分为四个 9 位字段(每个为一个级别)。

x86-64 通常使用 4 级分页(在 Linux 和 Windows 中),每个页表有 512 个条目,如下

级别 1(PML4 表):9 位

2级(页目录指针表):9位

3级(页面目录):9位

4级(页表):9位

剩余位:12位用于页面偏移。

ARM 架构可能使用 3 或 4 级,具体取决于配置(例如,使用 39 位或 48 位虚拟地址空间)。

理论上,您可以根据需要继续添加级别,但每增加一个级别都会增加地址转换的内存访问时间,这就是为什么超过 4 或 5 个级别在实践中并不常见。由于多次内存查找,过多的级别会导致性能低下。 除了性能开销之外,管理多个级别的分页还增加了操作系统内存管理子系统的复杂性 在现代系统中,根据架构和虚拟地址空间的大小,通常使用 3 到 5 级分页。

© www.soinside.com 2019 - 2024. All rights reserved.