内核对映射文件的刷新/同步可以中断 write() 调用吗?

内核对映射文件的刷新/同步可以中断 write() 调用吗?

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

内核的flusher和write互斥吗?

如果没有,有没有办法复制整个页面?比如通过扰乱虚拟页面指针将一个页面的内容复制到另一个页面?

相关内容