此图中的物理页码是否都相同?

Are the Physical Page Numbers in this diagram the same between all?

我目前正在阅读一本关于 xv6 的教科书,到目前为止我已经理解了这一点...

虚拟地址:索引到 PTE 的前 20 位。 PTE 将这 20 位转换为 物理页码:PPN。剩下的12位用于偏移量,在虚拟地址和物理地址中都是一样的。

Paging:分页硬件使用虚拟地址中 20 位的前 10 位到 select 一个 页目录条目 (PDE)。如果存在 PDE,则使用接下来的 10 位虚拟地址到 select 页 table 条目 (PTE)。像这样...

00 0000 0011 | 00 0000 0010 | 0000 0000 0101

页面目录。 (3) |页码Table E.(2) |偏移量 (5)

问题: 各图中显示的PPN是否相同?我也知道页目录和页 table 条目之间的区别只有 1 位,设置为 0 或 1 取决于您是在页目录还是 table。那么 PPN 在所有 3 个之间是否通用? (物理地址,页面 Table,页面目录)。

希望这能回答您的问题。如果您访问 32 位地址,则会将 12 位保存为页中的偏移量。它们不参与地址转换。

CR3 寄存器指向页面 table 目录。尽管您的图表中未指定,但我相信这指向一个物理页面框架。该页框包含一个目录数组。您地址中的前 10 位是该目录的索引。

所以现在您的结构与图中的结构类似。该结构包含一个指向包含页面 table 的物理页框 (PPN) 的指针。同样,这是将用零填充的物理地址。您使用 PPN 字段中的值查找页面 table.

您的页面 table 是一组看起来就像目录的结构。在您的图表中误导的是 D 位可能会或可能不会在页面 table 中设置,而它在目录中始终是清晰的。您地址中接下来的 10 位是此 table 的索引。使用它们找到所需的页面 table 条目。

和以前一样,您拥有 PPN。在第二次迭代中,这是一个指向物理地址的指针,但现在它是您要访问的实际内存页。用零填充 PPN 的 20 位,然后添加地址的低 12 位,就得到了物理地址。