我知道(可耻地)没有办法阻止内核刷新文件的脏页mmap
-ed with MAP_SHARED
,所以为了收回控制权,我想用 映射一个文件MAP_PRIVATE
,然后当我想刷新时,我再次mmap
使用MAP_SHARED
,然后使用write
或复制(从私有映射)memcpy
,然后使用 刷新msync
,最后使用 取消映射munmap
。现在我想知道,内核的刷新器是否可以中断我的写入,从而导致我第二次msync
同步该页面(在哪里被中断)?write
内核的flusher和write
互斥吗?
如果没有,有没有办法复制整个页面?比如通过扰乱虚拟页面指针将一个页面的内容复制到另一个页面?