我知道共享内存的创建(使用普通页面),其中创建的进程的虚拟地址和附加到它的进程的虚拟地址是不同的。但它们内部会被映射到同一个物理地址帧。
在我们的项目中,我们分配大页面(连续和不可交换内存),并使用第三方 API(英特尔 DPDK)来创建/附加共享内存(从大页面)。我观察到所有进程中访问大页面的虚拟地址都是相同的。
这可能吗?我很好奇这怎么可能?
最佳答案
如果您只想知道两个进程的相同虚拟地址可以映射到相同的物理页,那么答案是肯定的。这种情况并没有什么问题。但是,如果在创建共享页面时,您总是为共享物理页面的所有进程获得相同的地址,那么它是唯一的,但正如您所说,您正在使用某些 API,那么它与该 API 功能相关(您的问题的一部分)。如果您确信情况确实如此,那么在我看来,这是一个可以被利用的漏洞。您应该咨询有关当局/专家以传达您的发现。
关于linux - Linux中具有相同虚拟和物理地址空间的两个进程(共享大页),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996189/