通过页表将虚拟地址VA转为物理地址

示例分析(物理地址24位)
假设:
- 虚拟地址空间:32位(
n=32) - 页大小:4KB(\(P=2^{12}\) →
p=12) - 物理地址空间:24位(
m=24)
关键参数计算:
-
虚拟地址划分:
- VPN位数 = 32 - 12 = 20位(高20位)
- VPO位数 = 12位(低12位)
-
物理地址划分:
- PPN位数 = 24(物理地址总长) - 12(PPO) = 12位
- PPO位数 = VPO位数 = 12位(直接复用)
地址翻译流程:
-
虚拟地址:
0x12345678(32位)- VPN = 高20位
0x12345(索引页表) - VPO = 低12位
0x678(页内偏移)
- VPN = 高20位
-
查询页表:
- 用VPN
0x12345找到PTE,假设PTE中PPN =0xABC(12位)
- 用VPN
-
生成物理地址:
- PPN (
0xABC) + PPO (0x678) → PA =0xABC678(24位)
- PPN (
验证物理地址范围:
- 最大物理地址 =
0xFFFFFF(24位全1),符合物理地址空间限制。
关键总结
- 物理地址空间决定PPN位数:
- 物理地址24位 → PPN = 12位,PPO = 12位。
- 页表项(PTE)中PPN字段的位数必须与物理地址空间匹配。
- 典型场景:
- 32位系统 + 4KB页 → 虚拟地址:VPN 20位 + VPO 12位。
- 物理地址24位 → PPN 12位 + PPO 12位。
这种设计确保了虚拟地址到物理地址的正确映射,同时约束了物理内存的最大容量(如24位地址对应16MB)。

浙公网安备 33010602011771号