将相同的物理地址映射到不同的虚拟地址空间

时间:2016-12-21 06:36:07

标签: memory memory-management operating-system

我正在使用MmMapLockedPagesSpecifyCache将物理内存映射到用户进程的虚拟地址空间,但我想知道同一物理地址是否可以同时映射到不同的虚拟地址空间。

1 个答案:

答案 0 :(得分:1)

是的,你可以。
将相同的物理地址映射到两个或更多不同的虚拟地址没有任何内在错误 这种灵活性是虚拟内存成功的原因之一。

如果您考虑如何实现共享内存和内存映射文件,您将看到它们可能将相同的物理地址映射到不同的虚拟地址(请注意:物理地址属于不同的进程地址空间,但不是不改变结论。

CPU没有任何限制,它是“索引”转换表的虚拟地址,并且让两个“索引”返回相同的“值”没有什么特别之处。
相反,由于上述原因,映射到一个虚拟地址的两个不同的物理地址是不可能的。