我如何理解Linux是否实际合并了两个页面?

时间:2014-09-24 11:32:37

标签: caching paging sharing mmap flush

我一直试图实施本文所述的攻击:https://eprint.iacr.org/2013/448.pdf。遗憾的是,没有源代码,也没有足够的细节来说明一些非常低级的细节是如何工作的。

例如,他们声明mmap ping另一个进程P2的虚拟空间中的进程P1的可执行文件使得内核(假设)将P1的.text段与相同的{{1}合并在物理内存级别由P1进行.text分段(当然,P2到内存中只是随机数据,而不是实际的mmap分段)。但是我怎样才能确保实际发生这种情况呢?

让我们在P1 .text中获取地址a。其在P2虚拟空间中的内容将位于地址.text(属于a* ped空间)mmap!= a(显然),即使它们(应该)都指向物理内存中的相同地址。如果我a* clflush我怎样才能确保我还刷新a*(因为缓存映射到物理内存)?换句话说:有没有办法知道Linux是否合并了aa引用的两个页面?

提前谢谢。

PS:我知道您无法将虚拟地址转换为用户空间中的物理地址,但我无法编写驱动程序或类似内容。

PPS:这是描述a* ping阶段(第4部分)的论文的摘录:

mmap

0 个答案:

没有答案