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)。