具有“PROT_NONE 位设置”的页面是否符合交换条件?

具有“PROT_NONE 位设置”的页面是否符合交换条件?

来自以下链接:页表管理 - kernel.org,我理解这些位PROT_NONEPRESENT可用于让操作系统知道页面受到保护但驻留在内存中。我使用这 2 位来跟踪进程访问的页面。这就是我正在做的,

  1. 我清除该PRESENT位并设置PROT_NONE我想要跟踪的进程的页面位,以便当该进程尝试访问所跟踪的页面时发生页面错误。
  2. 在页面错误上,在调用handle_pte_fault (x86)之前,在__handle_mm_fault内部,我清除PROT_NONE并设置PRESENT该页面是否被我跟踪。这样就可以正常执行了。

但如果该页面同时被操作系统换出,就会出现问题。所以,我想知道:

  1. PROT_NONE是否可以交换设置了位的页面?
  2. PROT_NONE当这样一个受保护的页面被换出时,这些位会发生什么?我的意思是如何区分页面是否被换出?因为PRESENT位已经被清除了。

如果我的理解有错误,请指出。

相关内容