【发布时间】:2017-05-06 12:14:44
【问题描述】:
我正在使用 MmMapLockedPagesSpecifyCache 将物理内存映射到用户进程的虚拟地址空间,但是我想知道同一物理地址是否可以同时映射到不同的虚拟地址空间。
【问题讨论】:
标签: memory memory-management operating-system
我正在使用 MmMapLockedPagesSpecifyCache 将物理内存映射到用户进程的虚拟地址空间,但是我想知道同一物理地址是否可以同时映射到不同的虚拟地址空间。
【问题讨论】:
标签: memory memory-management operating-system
是的,你可以。
将同一个物理地址映射到两个或多个不同的虚拟地址本身并没有错。
这种灵活性是虚拟内存成功的原因之一。
如果你考虑一下共享内存和内存映射文件是如何实现的,你会发现它们很可能将同一个物理地址映射到不同的虚拟地址(这里要小心:物理地址属于不同的进程地址空间,但这并不不要改变结论)。
CPU 没有任何限制,它是“索引”转换表的虚拟地址,两个“索引”返回相同的“值”并没有什么特别之处。
反之,将两个不同的物理地址映射成一个虚拟地址是不可能的。
【讨论】: