我刚刚阅读了一本操作系统书籍,并在逻辑地址转换为物理地址时引用了重定位寄存器。
我明白他们是如何转变的。本质上,逻辑地址被添加到重定位寄存器以获取物理内存地址。 (非常简单的版本)。
但要实现这一点,如果有多个流程,重定位寄存器必须不断变化。
例如,如果重定位寄存器是常量2000,那么将始终为进程提供相同的物理内存地址。
那么如何找到重定位寄存器的值呢? 它是如何改变的?
感谢您的帮助!这本书很害羞,远离这个。
答案 0 :(得分:5)
分配给进程的内存的逻辑地址是基址寄存器和限制寄存器的组合。
将此逻辑地址添加到重定位寄存器时,它会提供物理地址。
因此,即使重定位寄存器是常量,也会给进程提供不同的物理地址,因为进程'逻辑地址会改变。
找到重定位寄存器的值究竟是什么?
重定位寄存器的值将由OS设置,没有用户进程可以访问该值。只有内存管理单元知道这个值。
如何更改?
操作系统可以更改该值。
<小时/> 附注:重定位寄存器的重点是避免用户进程访问物理地址。操作系统驻留在物理内存中,地址范围为0-Relocation Register。
答案 1 :(得分:3)
在执行每个程序之前,OS将该寄存器设置为所需的值(所谓的基址)。
在多任务处理环境中,操作系统不仅会启动程序,还会定期在所有程序之间切换,以提供同时执行的假象。因此,从进程A到进程B的上下文切换现在包括以下操作: