链接器,绝对引用和进程地址空间

时间:2013-06-10 15:38:20

标签: memory-management linker

在阅读重定位绝对引用,共享库和与位置无关的代码时,我很困惑。我假设我对单个处理地址空间还不够了解。

在我的书中,作者通过插入全局变量/函数的运行时地址来讨论解决绝对符号引用的链接。链接器如何知道这一点?我可以编译,链接,创建我的可执行文件,并在不同的时间运行它。我猜它每次都不会被加载到内存中的相同位置,所以链接器怎么可能知道绝对的运行时地址变量/函数?

2 个答案:

答案 0 :(得分:1)

你是对的。通常,链接器不知道绝对地址并生成所谓的可重定位地址。在一个非常简单的模型中,可重定位地址在运行时绑定到绝对地址。

答案 1 :(得分:1)

链接器处理虚拟地址。绝对地址是绝对虚拟地址。

每个流程实例都具有完全相同的虚拟地址空间。