加载时地址绑定中逻辑地址和物理地址如何相同?

问题描述 投票:0回答:2

我正在学习操作系统基础知识。以下是我对加载时地址绑定的了解。

加载时地址绑定: 在这种类型的绑定中,编译器生成可重定位代码,并在主内存中加载编译后的代码时发生实际绑定,其中加载程序在所有可重定位地址中添加基地址。

所以,这是我的问题:
假设,CPU从编译代码生成逻辑地址x(也是可重定位地址),并且MMU将与加载器和限制寄存器相同的基地址y设置为0。因此,MMU将指向物理地址为x+y。所以,这里逻辑地址是x,物理地址是x+y,那么在加载时绑定时逻辑地址和物理地址如何相同。

我在here发现了同样的问题,但尚未得到解答。

提前致谢。

memory memory-management operating-system
2个回答
0
投票

假设你有现实(例如物理记忆),但在现实之上你构建了一个精心设计的幻象(例如虚拟记忆),以确保没有其他东西需要关心现实,而其他一切都只能看到幻象。

在幻象之上;操作系统将文件中的内容加载到“虚拟地址 x”,并进行加载时地址绑定以修补内容以在“虚拟地址 x”上工作;但这些都没有任何理由关心现实或物理地址。

在幻象之下;也许“虚拟地址x”最终会变成“物理地址y”;也许“虚拟内存”是真实/物理 RAM 和交换空间以及其他东西的混合体;也许“虚拟内存”的碎片经常在不同的物理位置(RAM、磁盘……)之间跳跃。只要它创造了“记忆”的错觉,那就没什么大不了的,并且构建在顶部(加载时间绑定)上的任何东西都没有理由关心。


0
投票

我在我的教科书中读到了同样的内容,我的解释是,这都是在分段而不是分页的背景下讨论的!所以:

  1. 编译时:这里我们知道编译时的物理地址,因此我们在编译时第一次创建绝对(物理)地址!

  2. 加载时间:在这种情况下,是的,我们在编译时生成相对地址。但是,在加载时,由于我们知道加载时的物理地址(因为程序在执行时加载后不会重新定位),因此我们计算并用绝对地址替换相对地址,因此在这种情况下也是逻辑地址地址(CPU 生成的地址)将与物理地址相同。

这就是我的解释...

© www.soinside.com 2019 - 2024. All rights reserved.