Skip to content

[Question] 关于 SV39 多级页表 的概念比较模糊 #154

Open
@CelestialMelody

Description

@CelestialMelody

关于《分析 SV39 多级页表的内存占用》,理论上的第一种上限

每映射一个 4KiB 的虚拟页面,需要初始就有一个页表根节点,因为还需其它两级页表节点,故最多还需要新分配两个物理页帧来保存新的节点。

我的问题是:

  1. 为什么“最多还需要新分配 两个 物理页帧来保存新的节点”?
  2. 没有理解这里 'S / 4KiB' 的含义。这里的计算看起来就像是:每连续映射 4KB 新分配 2 个 4KB 的页表。

一些概念的表述不太理解

在 SV39 中

  • 如果使用了一级页索引就停下来,则它可以涵盖虚拟页号的高 9 位为某一固定值的所有虚拟地址,对应于一个 1GiB 的大页;
  • 如果使用了二级页索引就停下来,则它可以涵盖虚拟页号的高 18 位为某一固定值的所有虚拟地址,对应于一个 2MiB 的大页;
  • 如果使用了所有三级页索引才停下来,它可以涵盖虚拟页号的高 27 位为某一个固定值的所有虚拟地址,自然也就对应于一个大小为 4KiB 的虚拟页面。

这里的 一级索引 在使用上似乎用于映射 根页表(第三级页表)的页表项(不知道有没有理解出错)

括号中的两项分别对应为了映射这段连续区间所需要新分配的最深层和次深层节点的数目:

  • 前者(对应 第二级页表)每连续映射 2MB 才会新分配一个 4KB 的第一级页表;
  • 后者(对应 根页表,第三级页表)每连续映射 1GB 才会新分配一个 4KB 的第二级页表。

我的问题是:

  1. 是否第三级页表映射地址范围为 512 GB(第二级页表范围为 1 GB,第三级页表为 2KB)?
  2. 根页表(第三级页表)包含的是虚拟页号的高 9 位(一级索引)映射的页表项?

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions