Linux Kernel中最先引入的机制是clear_refs还是userfaultfd



我想知道上面哪一种机制是首先在Linux中引入的.其中两个是脏位跟踪机制。

第一个是通过/proc/clear_refs文件完成的,如下所示:一旦用户写入"4"对于/proc/$pid/clear_refs,内核取消了进程所有页面的脏位设置,并且在下一次尝试访问这些页面时,将触发页面错误并重置脏位(由内核),然后用户可以通过/proc/pagemap收集已访问的页面。

第二种方法允许用户自己处理页面错误:用户首先请求内核保护通过mmap分配的给定内存区域;在此之后,任何访问该区域页面的尝试都会产生一个页面错误,该错误的处理被转移给用户,例如,用户可以请求内核允许或拒绝访问。因此,通过这种方式,人们不再需要通过页面地图来知道哪些页面被访问或没有访问。

Fromman 5 proc:

/proc/[pid]/clear_refs (since Linux 2.6.22)

和来自man 2 userfaultfd:

VERSIONS
The userfaultfd() system call first appeared in Linux 4.3.

所以看起来/proc/[pid]/clear_refsuserfaultfd老得多。

相关内容

  • 没有找到相关文章

最新更新