【发布时间】:2016-04-24 08:46:49
【问题描述】:
编译时间。如果您在编译时知道进程将驻留的位置 在内存中,然后可以生成绝对代码。例如,如果你知道 用户进程将从位置 R 开始驻留,然后生成 编译器代码将从该位置开始并从那里向上扩展。如果,在 稍后,起始位置发生变化,则需要 重新编译这段代码。 MS-DOS .COM 格式的程序绑定在 编译时间。
- 起始位置改变的原因是什么?是真的吗 因为上下文切换/交换?
- 绝对码是二进制码吗?
加载时间。 如果在编译时不知道进程将驻留的位置 在内存中,编译器必须生成可重定位代码。在这种情况下, 最终绑定延迟到加载时间。如果起始地址发生变化,我们 只需重新加载用户代码即可合并此更改的值。
- 可重定位代码与绝对代码有何不同?它是否包含有关基址、限制和重定位寄存器的信息?
- 重新加载比重新编译更有效,因为他们提到only重新加载意味着不重新编译只重新加载?
执行时间。如果进程可以在其执行期间从 一个内存段到另一个内存段,然后绑定必须延迟到运行 时间。 .
-
为什么在执行过程中可能需要移动进程?
编译时和加载时地址绑定方法生成 相同的逻辑和物理地址。但是,执行时地址绑定方案会导致逻辑地址和物理地址不同。
编译和加载时方法如何生成相同的逻辑地址和物理地址?
【问题讨论】:
标签: operating-system compile-time execution-time load-time