Gok*_*tug 2 virtual-memory memory-management
我找到了一些关于什么是“地址绑定”的解释。他们说“地址绑定是将虚拟或逻辑地址映射到物理地址的操作”。
这个定义正确吗?
我无法确定它是否正确,因为大学的演示文稿说将虚拟地址转换为物理地址是在执行时执行的。但是,地址绑定表示绑定操作可以在编译时、加载时或执行时实现。
这说明存在矛盾。
Quora 上的解释在我看来相当混乱,并且混淆了许多概念。
在内存地址(例如与网络地址相对)的上下文中,术语“地址绑定”来自Leon Presser 和 John R. White 1972 年关于链接器和加载器的论文(另请参阅ACM 条目),其中定义了如下:
逻辑地址到物理地址的转换或映射称为地址绑定。
快速阅读可能会让人觉得这是从内存管理的角度讨论逻辑和物理地址,但事实并非如此;在论文中,物理地址是内存中“信息”的地址,逻辑地址是用于引用该信息的符号。因此地址绑定现在通常被称为符号(或指针)重定位,正如您所说,这可能发生在编译时(例如生成静态二进制文件时)、加载时(当动态链接器解析符号时)共享库),或在执行时(当正在运行的程序手动解析符号时,例如使用dlopen
)。