我知道操作系统会将精灵加载到物理内存中。执行时jmp elf-address
,系统会检查 tlb 并将 elf-address 转换为物理地址。我很困惑 elf-address 没有段号和页号?os 如何将 elf-address 转换为 MMU 需要的。
我真的很困惑。我知道linux会读取精灵的标题和地图精灵。当页面错误发生时,内核会在内存中加载精灵并刷新页表。但是你知道 elf 地址就像 0x0804900。如果我们想执行 exe jmp elf-address
,内核如何将 elf-address 映射到 MMU 可以使用的地址。你知道 MMU 地址是基于段数和页数的。
是否有操作系统会查找的地图表?当 exec 时jmp elf-address
,操作系统会先将 elf-address 映射到 MMU 地址吗?例如:
elf-address <==> MMU-address