Operating system 在用户模式下,应用程序永远不会知道其内存所在的物理地址,那么为什么链接器会为所有部分提供物理地址呢?
在用户模式下,应用程序永远不会知道其内存所在的物理地址,那么为什么链接器会为所有部分提供物理地址呢?如下图所示: 程序头Operating system 在用户模式下,应用程序永远不会知道其内存所在的物理地址,那么为什么链接器会为所有部分提供物理地址呢?,operating-system,Operating System,在用户模式下,应用程序永远不会知道其内存所在的物理地址,那么为什么链接器会为所有部分提供物理地址呢?如下图所示: 程序头 Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align ------------------------------------------------------------------------ PHDR 0x000034 0x08048034 0x0
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
------------------------------------------------------------------------
PHDR 0x000034 0x08048034 0x08048034 0x00120 0x00120 R E 0x4
INTERP 0x000154 0x08048154 0x08048154 0x00013 0x00013 R 0x1
LOAD 0x000000 0x08048000 0x08048000 0x0065c 0x0065c R E 0x1000
LOAD 0x000f14 0x08049f14 0x08049f14 0x00100 0x00108 RW 0x1000
DYNAMIC 0x000f28 0x08049f28 0x08049f28 0x000c8 0x000c8 RW 0x4
NOTE 0x000168 0x08048168 0x08048168 0x00044 0x00044 R 0x4
GNU_EH_FRAME 0x00053c 0x0804853c 0x0804853c 0x0003c 0x0003c R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
GNU_RELRO 0x000f14 0x08049f14 0x08049f14 0x000ec 0x000ec R 0x1
同一个链接器可能支持内核模式代码。也就是说,在用户模式下,加载程序在内存中加载elf时忽略物理地址?linux中的loader上有好的文档吗?@Techie-最终在执行时,所有虚拟地址不都应该映射到物理地址吗?