编译时间。如果在编译时知道进程将在内存中驻留 ,则可以生成绝对代码。例如,如果您知道用户进程将从位置R开始驻留的 ,则生成的 编译器代码将从该位置开始并从那里向上延伸。如果在 的某个较晚的时间,的起始位置发生变化,那么将需要 重新编译此代码。 MS-DOS .COM格式的程序在编译时绑定在 。关于地址绑定的困惑
- 什么可以是起始位置改变的原因?由于上下文切换/交换,它可以是 吗?
- 绝对代码是指二进制代码吗?
加载时间。如果在编译时未知进程将在内存中驻留 ,那么编译器必须生成可重定位代码。在这种情况下, 最终绑定会延迟到加载时间。如果起始地址发生变化,我们需要 重新加载用户代码来合并此更改的值。
- 可重定位代码与绝对代码有什么不同?它是否包含有关基地,限制和重新安置登记的信息?
- 如何重新加载更有效然后重新编译,因为他们提到只有重新加载意味着没有重新编译只重新加载?
执行时间。如果可以在执行过程中将移动到从 一个内存段到另一个内存段,则绑定必须延迟到运行 时间。 。
为什么在执行过程中需要移动一个进程?
编译时和加载时地址绑定方法生成相同的逻辑和物理地址。但是,执行时地址绑定方案导致不同的逻辑和物理地址。
编译和加载时间方法如何生成相同的逻辑和物理地址?
这是我大学推荐的教科书(OS概念SILBERSCHATZ,GALVIN,GAGNE)。你能推荐一本更好的书吗? – user5951764
这解释了它。 VAX/VMS操作系统内部成本低廉。 – user3344003