编译时间和加载时间地址绑定的区别

编译时间和加载时间地址绑定的区别

地址绑定是程序指令和数据与实际物理内存位置的关联。操作系统中有各种类型的地址绑定。

地址绑定有 3 种类型:

  • 编译时地址绑定
  • 加载时地址绑定
  • 执行时间地址绑定

在这里,我们比较编译时间和加载时间地址绑定如下。

编译时地址绑定: 如果编译器负责执行地址绑定,则称为编译时地址绑定。这种类型的地址绑定将在将程序加载到内存之前完成。编译器需要与操作系统内存管理器交互以执行编译时地址绑定。

加载时间地址绑定: 这种类型的地址绑定将在程序加载到内存后完成。加载时地址绑定将通过操作内存管理器来完成。

编译时间和加载时间地址绑定的区别:

编译时地址绑定 加载时地址绑定
编译器负责编译时的地址绑定。 加载器负责加载时的地址绑定。
编译时地址绑定生成逻辑地址(虚拟地址)。 加载时地址绑定生成物理地址。
编译时地址绑定是在将程序加载到内存之前完成的。 加载时地址绑定是在程序加载到内存后完成的。
指令被翻译成绝对地址。 绝对地址转换为可重定位地址。
代码在这里编译。 指令被加载到内存中。
编译时地址绑定适用于逻辑地址。 加载时地址绑定适用于物理地址。
编译时地址绑定是静态地址绑定。 加载时地址绑定也是静态地址绑定,但在某些操作系统中它支持动态地址绑定。
编译器与操作系统内存管理器交互来执行它。 加载时地址绑定由操作系统内存管理器本身完成。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程