如何在执行时地址绑定在OS中完成?

pod*_*oid 5 operating-system

我在高尔文的操作系统书中读过.在内存管理的地址绑定中,它说了3种类型的地址绑定.编译时,加载时间,执行时间.关于执行时间地址绑定:"物理地址是在执行时计算的." 但我的问题是,物理地址的这些计算是针对内存的基地址将进程加载到内存中.要首先执行该过程,必须将其加载到内存中.为此,它需要一些物理内存地址.那么在执行时如何计算这些地址呢?我很迷惑.

有些人可以为此提供解释.

谢谢

小智 14

你的想法是正确的.加载时和运行时绑定之间的区别在于,在每次运行时都有内存查找时,它会通过"重定位寄存器",就像基址寄存器一样,然后添加一个偏移量.

在加载时绑定中,它执行相同的操作,但后续查找不需要评估此寄存器.首次将地址拉入内存时设置地址.因此,如果基址更改,则需要重新加载整个过程以修复所有可重定位的地址.

在运行时,您可以在物理内存中移动进程,而不必担心重新加载它以修复映射,因为每次访问内存时它都会映射它.

加载时绑定导致匹配的逻辑/物理地址,但运行时导致不同的逻辑/物理地址.

我希望这对你来说更清楚.我刚刚开始学习内存管理:)