先决条件–地址绑定方法
地址绑定是程序指令和数据与实际物理内存位置的关联。操作系统中有多种类型的地址绑定。
地址绑定有3种类型:
- 编译时地址绑定
- 加载时间地址绑定
- 执行时间地址绑定
在这里,我们比较编译时间和加载时间地址绑定,如下所示。
编译时地址绑定:
如果编译器负责执行地址绑定,则称为编译时地址绑定。这种类型的地址绑定将在将程序加载到内存之前完成。编译器需要与操作系统内存管理器进行交互,以执行编译时地址绑定。
加载时间地址绑定:
在将程序加载到内存后,将完成这种地址绑定。加载时间地址绑定将通过操作内存管理器来完成。
编译时间和加载时间地址绑定之间的区别:
Compile Time Address Binding | Load Time Address Binding |
---|---|
Compiler is responsible for the compile time address binding. | Loader is responsible for the load time address binding. |
It generates logical address (virtual address). | It generates physical address. |
Compile time address binding is done before loading the program into memory. | Load time address binding is done after loading the program into memory. |
Instructions are translated into absolute address. | Absolute address is converted to relocatable address. |
Code is compiled here. | Instructions are loaded in memory. |
It works with logical address. | It works with physical address. |
It is static address binding. | It is also static address binding but in some operating system it supports dynamic address binding. |
Compiler interacts with operating system memory manager to perform it. | It is done by operating system memory manager itself. |