让我说我有两个过程,过程A和过程B
当系统处于进程A中时,CPU生成一个虚拟地址,假设为0x800000。 并且它通过上下文切换切换到进程B,CPU还生成相同的虚拟地址0x800000。 因此,如果我们在页面上写东西,操作系统如何知道它应该是流程B中的页面而不是流程A?
答案 0 :(得分:2)
逻辑内存转换将进程分开;不是虚拟内存。
进程看到逻辑内存地址,无法访问底层物理内存。每个进程都有一些表,这些表告诉CPU如何将逻辑地址转换为物理地址。操作系统维护这些表。
使用受保护的硬件寄存器标识表的位置。当进程A退出而进程B进入时,操作系统(在底层硬件的帮助下)更改寄存器的值,以便使用B的表。之后, 逻辑地址0X800000不再引用“ A”的物理内存位置,而是指向“ B”。