我刚刚阅读了一本操作系统书籍,它在将逻辑地址转换为物理地址时引用了重定位寄存器。
我了解他们是如何转换的。本质上,逻辑地址被添加到重定位寄存器以获得物理内存地址。(非常简单的版本)。
但是要使这个工作,如果有多个进程,重定位寄存器就必须不断变化。
例如,如果重定位寄存器是常数 2000,则进程将不断被赋予相同的物理内存地址。
那么如果重定位寄存器的值找到了怎么办呢?它是如何改变的?
感谢所有的帮助!这本书有点害羞。
我刚刚阅读了一本操作系统书籍,它在将逻辑地址转换为物理地址时引用了重定位寄存器。
我了解他们是如何转换的。本质上,逻辑地址被添加到重定位寄存器以获得物理内存地址。(非常简单的版本)。
但是要使这个工作,如果有多个进程,重定位寄存器就必须不断变化。
例如,如果重定位寄存器是常数 2000,则进程将不断被赋予相同的物理内存地址。
那么如果重定位寄存器的值找到了怎么办呢?它是如何改变的?
感谢所有的帮助!这本书有点害羞。
分配给进程的内存的逻辑地址是基址寄存器和限制寄存器的组合。当这个逻辑地址被添加到重定位寄存器时,它给出了物理地址。
因此,即使重定位寄存器不变,进程也会被赋予不同的物理地址,因为进程的逻辑地址会发生变化。
重定位寄存器的值究竟是如何找到的?
重定位寄存器的值将由操作系统设置,任何用户进程都不能访问该值。只有内存管理单元知道这个值。
它是如何改变的?
该值可以由操作系统更改。
该寄存器在执行每个程序之前由操作系统设置为所需的值(所谓的基地址)。
在多任务环境中,操作系统不仅会启动程序,还会定期在所有程序之间切换上下文,以产生同时执行的错觉。因此,从进程 A 到进程 B 的上下文切换现在包括以下操作: