在执行fork()时禁用某些内存页面上的写时复制(COW)

时间:2011-01-17 16:58:58

标签: c linux memory-management copy-on-write

当父进程分叉子进程(在linux下)时,我想将父进程中的一些内存页面复制到子进程的地址空间,这意味着,无需等待副本-on-写(COW)。有没有机制支持这个?感谢: - )

2 个答案:

答案 0 :(得分:1)

我不知道有任何接口,但是你总是手动执行,使用memcpy或只是触摸有问题的页面(例如,读取第一个单词,然后将其写回) 。请务必将页面标记为volatile

答案 1 :(得分:-1)

查看clone系统调用。最相关的选项是CLONE_VM。在fork纯粹是优化之后,实现页面的写时复制行为很重要。我无法预见这可能是一个问题的任何情况,除非您希望由于页面重复预先导致所有潜在的“懒惰”性能损失。即使对于这些,你也可能过于热衷于希望触及每个可写页面,因为你将增加从原始页面分叉的每个进程的物理内存使用。