编译时间,加载时间和执行时间之间有什么区别?
干杯!
上下文
传统上,指令和数据与内存地址的绑定可以在整个过程中的任何步骤完成:
编译时间。编译器将符号地址转换为绝对地址。如果您在编译时知道进程将驻留在内存中,则可以生成绝对代码(静态)。
加载时间。编译器将符号地址转换为相对(可重定位)地址。加载程序将这些转换为绝对地址。如果在编译时不知道进程将驻留在内存中,则编译器必须生成可重定位代码(静态)。
执行时间。如果进程在执行期间可以从一个内存段移动到另一个内存段,则必须将绑定延迟到运行时。绝对地址由硬件生成。大多数通用操作系统都使用此方法(动态)。
答案 0 :(得分:18)
这些术语对我来说似乎是不言自明的,但这里是试图描述它们。包括进一步阅读的链接。
编译时间是指compiler处理您的代码的时间。在这种情况下,它正在讨论将您的代码转换为可执行二进制文件的编译器。
Load time 是指操作系统从长期存储(通常是硬盘驱动器)读取可执行文件并 加载 它可以用于短期存储器(RAM)。通常,硬盘驱动器太慢而无法为CPU供电,因此快速存储器用于存储CPU准备执行的指令/程序。这也是保留初始内存分配并初始化以供程序使用的时候。
Execution时间是程序正在执行或运行的时间。指令在内存中,由CPU处理。此时可以分配和/或解除分配额外的内存。
答案 1 :(得分:14)
如果不太了解它的完成方式,我会写下 的内容。参考"绑定"一句话,这就是我所知道的:
编译时间绑定: 它是编译时逻辑地址到物理地址的转换。现在这种类型的绑定只能在我们事先知道主存储器内容的系统中,并且知道主内存中的地址,我们必须从中开始分配。在现代多编程系统中,不可能知道这两件事。因此可以安全地说,在不支持多编程的系统中,编译时绑定是可能的。
加载时间绑定: 它是当时逻辑地址到物理地址的转换 装载重定位加载程序在主内存中包含分配开始的基址。因此,当将进程加载到主存储器的时间到来时,重定位加载器会将所有逻辑地址添加到基址,以生成物理地址。
运行时绑定: 在大多数现代处理器中,支持多编程。因此,需要在运行时将物理地址从一个位置移动到另一个位置。这由运行时绑定概念来处理。它在压缩中用于删除外部碎片。它也用于虚拟功能。
我希望这能解决你的疑问!
答案 2 :(得分:-1)
- 必须将源代码编译成机器代码才能成为可执行程序。此编译过程称为编译时。编译的程序可以由用户打开和运行。当应用程序运行时,它被称为运行时。
- 绑定意味着程序指令数据与物理内存位置的关联。
- 编译时间绑定意味着指令数据与物理内存的关联,它由编译器完成。
- 类似地,加载时间绑定由加载器完成,运行时绑定由CPU完成。