可以从用户空间找到mmap页面的肮脏吗?

fad*_*bee 15 c c++ linux mmap linux-kernel

可以从linux 2.6.30+下的用户空间访问(非共享)mmap页面的肮脏吗?平台特定的黑客和kludges欢迎.

理想情况下,我正在寻找一个位数组,每页一个(4kB?)mmap的区域,如果该页面已被写入,则设置该区域是mmap的.

(我知道,写作过程可以跟踪这些信息 - 但如果内核正在这样做,那么这样做似乎很愚蠢.)

谢谢,

克里斯.

ado*_*yan 12

请参阅/ proc/*/pagemap /proc/kpageflags接口.首先告诉PFN一个地址,第二个告诉你给定PFN的脏位.

请参阅fs/proc/task_mmu.c,Documentation/vm/pagemap.txt,Documentation/vm/page-types.c.


bma*_*ies 5

传统的解决方案是将mprotect设置为只读,然后在重新保护之前处理sigsegv并标记脏以允许写入.为了这个目的,我们很久以前就在ObjectStore做过这个.