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

示例分析(物理地址24位)

假设:

  • 虚拟地址空间:32位(n=32
  • 页大小:4KB(\(P=2^{12}\)p=12
  • 物理地址空间:24位(m=24

关键参数计算:

  1. 虚拟地址划分

    • VPN位数 = 32 - 12 = 20位(高20位)
    • VPO位数 = 12位(低12位)
  2. 物理地址划分

    • PPN位数 = 24(物理地址总长) - 12(PPO) = 12位
    • PPO位数 = VPO位数 = 12位(直接复用)

地址翻译流程:

  1. 虚拟地址0x12345678(32位)

    • VPN = 高20位 0x12345(索引页表)
    • VPO = 低12位 0x678(页内偏移)
  2. 查询页表

    • 用VPN 0x12345找到PTE,假设PTE中PPN = 0xABC(12位)
  3. 生成物理地址

    • PPN (0xABC) + PPO (0x678) → PA = 0xABC678(24位)

验证物理地址范围:

  • 最大物理地址 = 0xFFFFFF(24位全1),符合物理地址空间限制。

关键总结

  1. 物理地址空间决定PPN位数
    • 物理地址24位 → PPN = 12位,PPO = 12位。
  2. 页表项(PTE)中PPN字段的位数必须与物理地址空间匹配。
  3. 典型场景
    • 32位系统 + 4KB页 → 虚拟地址:VPN 20位 + VPO 12位。
    • 物理地址24位 → PPN 12位 + PPO 12位。

这种设计确保了虚拟地址到物理地址的正确映射,同时约束了物理内存的最大容量(如24位地址对应16MB)。

posted @ 2025-06-16 17:21  风冷无霜  阅读(93)  评论(0)    收藏  举报