linux内存管理(虚拟地址到物理地址转换)

该示例以 32 位系统、4KB 页为例说明:

1.地址拆分(左侧:虚拟地址)

  • 例:虚拟地址 0x12345678
    页索引 = 0x12345(高 20 位),页内偏移 = 0x678(低 12 位)。

 2. 页表查询(中间:页表映射)

  • MMU 用虚拟页索引(0x12345)查询页表,找到对应的物理页基地址(0x87654000)。
  • 标志位:表示该页是否在物理内存中(存在位)、读写权限等

3. 物理地址合成(右侧:物理地址)

  • 物理页基地址(0x87654000)+ 页内偏移(0x678)= 物理地址 0x87654678

4. 完整转换流程(串联)

5.TLB 的作用(加速环节)

  • 若 TLB 中存在虚拟页索引(0x12345),直接获取物理页基地址,跳过内存中的页表查询,加速转换。

总结

进程操作虚拟地址 → MMU拆分地址 → 查询页表 → 合成物理地址 → 访问物理内存

    通过以上结构,可清晰看到虚拟地址如何通过 MMU 和页表转换为物理地址,核心是 “按页拆分地址→页表映射→偏移复用” 的过程。如果需要更复杂的多级页表转换(如 64 位系统),原理类似,只是页索引会被拆分为多个层级,逐级查询页表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值