1. Sv39 地址拆分

xv6 运行在 Sv39 模式下。虽然 CPU 寄存器是 64 位,但只使用低 39 位作为虚拟地址(VA)。

  • Index (索引):前 27 位。拆分为 3 级(L2, L1, L0),每级 9 位。
  • Offset (偏移量):后 12 位。对应一页的大小 4096 字节。

2. 三级页表结构

为了节省内存,映射表不是一个巨大的数组,而是一棵“树”:

  • 根页表 (Root Page Table):由寄存器 satp 指向其物理地址。
  • 中间层:每一级 PTE 存储下一级页表的物理页号(PPN)。
  • 底层 (L0):存储最终的物理页号(PPN)。