【发布时间】:2011-11-23 16:38:52
【问题描述】:
我想查看我的程序正在访问哪些页面。现在一种方法是使用mprotect 和SIGSEGV 处理程序来记下正在访问的页面。但是,这涉及为我感兴趣的所有内存页面设置保护位的开销。
想到的第二种方法是在开始时使翻译后备缓冲区 (TLB) 无效,然后记下未命中的内容。在每次未命中时,我都会记下寻址的内存页,因此记下它。现在的问题是如何处理 linux 程序在用户空间中的 TLB 未命中。
如果您知道比 TLB 未命中或 mprotect 更快的方法来记录脏内存页,请告诉我。另外,我想要一个仅适用于 x86 的解决方案。
【问题讨论】: