匿名映射页面和fork()?

时间:2017-02-27 06:59:22

标签: linux linux-kernel paging virtual-memory

进程调用fork()并在其地址空间中使用匿名映射页面并且子进程修改页面后,子进程中的匿名映射页面是否基本上像内存映射页面一样起作用?

1 个答案:

答案 0 :(得分:0)

这取决于传递给mmap的标志。如果指定了MAP_SHARED,则将共享映射的页面。如果MAP_PRIVATE,则不会共享映射页面 - 每个分叉进程都会获得自己的副本。

  

MAP_SHARED和MAP_PRIVATE描述了write的处理   对内存对象的引用。如果指定了MAP_SHARED,则写入   引用应改变基础对象。如果MAP_PRIVATE是   指定的,调用进程对映射数据的修改   应仅对调用过程可见,不得更改   基础对象。没有具体说明是否修改了   建立MAP_PRIVATE映射后完成的基础对象   通过MAP_PRIVATE映射可见。 MAP_SHARED或   可以指定MAP_PRIVATE,但不能同时指定两者。映射类型是   保留在fork()。

POSIX.1-2001: mmap