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

标签 linux memory memory-management operating-system

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

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

这可能吗?我很好奇这怎么可能?

最佳答案

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

关于linux - Linux中具有相同虚拟和物理地址空间的两个进程(共享大页),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996189/

相关文章:

linux - PHPMyadmin xampp 错误

c# - .NET Core 中的跨平台文件名处理

windows - 用Linux和Mac代码完成这3种方法,Memory Info平台独立类

Java 进程内存使用量远远超过 Runtime.totalMemory 等方法所告诉的

linux - 内核和 shell 之间的通信

linux - 如何从程序集 nasm x86 linux 8086 调用 printf

c# - RenderTargetBitmap 内存泄漏

c - 任何查询分配 block 大小的函数?

c++ - 使用 unique_ptr 和适当的容器进行内存管理

hadoop - Cloudera 管理器 "Memory Overcommit Validation Threshold"