![具有“PROT_NONE 位设置”的页面是否符合交换条件?](https://linux22.com/image/40936/%E5%85%B7%E6%9C%89%E2%80%9CPROT_NONE%20%E4%BD%8D%E8%AE%BE%E7%BD%AE%E2%80%9D%E7%9A%84%E9%A1%B5%E9%9D%A2%E6%98%AF%E5%90%A6%E7%AC%A6%E5%90%88%E4%BA%A4%E6%8D%A2%E6%9D%A1%E4%BB%B6%EF%BC%9F.png)
来自以下链接:页表管理 - kernel.org,我理解这些位PROT_NONE
和PRESENT
可用于让操作系统知道页面受到保护但驻留在内存中。我使用这 2 位来跟踪进程访问的页面。这就是我正在做的,
- 我清除该
PRESENT
位并设置PROT_NONE
我想要跟踪的进程的页面位,以便当该进程尝试访问所跟踪的页面时发生页面错误。 - 在页面错误上,在调用handle_pte_fault (x86)之前,在__handle_mm_fault内部,我清除
PROT_NONE
并设置PRESENT
该页面是否被我跟踪。这样就可以正常执行了。
但如果该页面同时被操作系统换出,就会出现问题。所以,我想知道:
PROT_NONE
是否可以交换设置了位的页面?PROT_NONE
当这样一个受保护的页面被换出时,这些位会发生什么?我的意思是如何区分页面是否被换出?因为PRESENT
位已经被清除了。
如果我的理解有错误,请指出。