我有一个关于虚拟记忆的微妙问题。在一本书里,我读到了这句话
当执行ELF文件时,文本和两个数据段被加载到虚拟内存的不同区域。
但是,例如,如果我们编译一个由两个源文件组成的C程序,而不进行链接,它将产生两个对象文件。在这两个目标文件中,寻址从零开始。然后,如果我们将两个对象文件链接到一个可执行文件并检查它,我们将发现寻址不再从零开始,而是已经为每个段分配了一些地址。据我了解,这个分配的地址是一个虚拟内存地址。所以我有两个问题:
发布于 2012-01-06 17:40:26
链接器将分配一个虚拟地址,该虚拟地址可用作加载段的“基”。所以,是的,链接器确实分配了虚拟地址库。操作系统只是将这个内存映射到一个物理地址。分配是将物理地址分配给虚拟地址的操作系统。
https://stackoverflow.com/questions/8761875
复制相似问题