linux中具有相同虚拟和物理地址空间的两个进程(共享大页面)

时间:2015-08-13 18:49:25

标签: linux memory memory-management operating-system

我知道共享内存创建(使用普通页面),其中创建的进程的虚拟地址和附加到它的进程的虚拟地址是不同的。但它们内部将映射到相同的物理地址帧。

在我们的项目中,我们分配了大页面(连续内存和非连接内存),我们使用第三方API(英特尔DPDK)来创建/附加共享内存(来自大页面)。我观察到在所有进程中访问大页面的虚拟地址是相同的。

有可能吗?我很想知道这有可能吗?

2 个答案:

答案 0 :(得分:0)

如果您只是想知道来自两个进程的相同虚拟地址可以映射到同一个物理页面,那么回答是肯定的。这种情况没有错。但是,如果在创建共享页面时,您总是为共享物理页面的所有进程获得相同的地址,那么它是唯一的,但正如您所说,您正在使用某些API,那么它与该API功能相关(您的问题的部分)。如果您确定是这种情况,那么在我看来,这是一个可以被利用的漏洞。您应咨询相关机构/专家,以传达您的发现。

答案 1 :(得分:0)

两个进程具有相同的虚拟地址!它是正确的!映射虚拟地址和物理地址后,主进程将映射信息写入文件;从属进程读取文件并执行相同的映射!