地址绑定生成相同的地址

时间:2012-06-20 12:30:53

标签: operating-system

为什么要编译时间&加载时间地址绑定生成相同的物理和逻辑地址,而执行时间地址绑定生成不同的物理和地址。逻辑地址?

1 个答案:

答案 0 :(得分:12)

很久以来,这个问题被问到了,但我只是为归档目的添加答案。

让我们看看以下定义:

Logical address:CPU生成的地址

Physical address:内存管理单元(MMU)所看到的地址

现在在compile time binding我们假设一系列的内存位置始终可用(这对程序来说已经足够)并且生成了绝对代码。因此,CPU生成的任何地址(如指针地址等)都与MMU看到的相同。

更好的内存利用率版本是延迟绑定直到加载时间,以便磁盘上的程序不会使用内存。为此,代码以可重定位格式生成。这是load time binding

现在execution time binding有点不同,绑定被延迟到执行时间。在这种情况下,CPU生成一个地址,让我们说300,并对地址300进行所有操作,但只要有实际的内存访问,通过添加可重定位寄存器的值来转换该地址,我们对这个地址说R。因此,逻辑地址范围为0-LIM,而物理地址空间为R-(R+LIM)

我还要用一个例子来解释它,以便更清楚:

如果您将程序与load time binding交换,则需要将其交换回相同的位置(因为说明中的所有地址都是根据此地址进行竞价),而考虑在execution time binding您可以交换将任何进程返回到任何地方,因为您只需要更改可重定位寄存器中的值,它就可以正常工作。因此增加了内存利用率。