虚拟内存如何隔离不同的进程?

时间:2018-11-27 00:56:27

标签: linux operating-system virtual-memory

让我说我有两个过程,过程A和过程B

当系统处于进程A中时,CPU生成一个虚拟地址,假设为0x800000。 并且它通过上下文切换切换到进程B,CPU还生成相同的虚拟地址0x800000。 因此,如果我们在页面上写东西,操作系统如何知道它应该是流程B中的页面而不是流程A?

1 个答案:

答案 0 :(得分:2)

逻辑内存转换将进程分开;不是虚拟内存。

进程看到逻辑内存地址,无法访问底层物理内存。每个进程都有一些表,这些表告诉CPU如何将逻辑地址转换为物理地址。操作系统维护这些表。

使用受保护的硬件寄存器标识表的位置。当进程A退出而进程B进入时,操作系统(在底层硬件的帮助下)更改寄存器的值,以便使用B的表。之后, 逻辑地址0X800000不再引用“ A”的物理内存位置,而是指向“ B”。