【发布时间】:2017-07-17 16:50:35
【问题描述】:
当一个进程在其地址空间中调用带有匿名映射页面的 fork() 并且子进程修改该页面后,子进程中的该匿名映射页面是否基本上开始像内存映射页面一样?
【问题讨论】:
标签: linux linux-kernel paging virtual-memory
当一个进程在其地址空间中调用带有匿名映射页面的 fork() 并且子进程修改该页面后,子进程中的该匿名映射页面是否基本上开始像内存映射页面一样?
【问题讨论】:
标签: linux linux-kernel paging virtual-memory
这取决于传递给mmap 的标志。如果指定了MAP_SHARED,则映射页面将被共享。如果MAP_PRIVATE,映射的页面将不会被共享——每个分叉的进程都会得到自己的副本。
MAP_SHARED 和 MAP_PRIVATE 描述 write 的配置 对内存对象的引用。如果指定了 MAP_SHARED,则写入 引用应更改基础对象。如果 MAP_PRIVATE 是 指定,调用进程对映射数据的修改 应仅对调用进程可见,并且不应更改 底层对象。未说明是否修改 建立 MAP_PRIVATE 映射后完成的基础对象 通过 MAP_PRIVATE 映射可见。 MAP_SHARED 或 可以指定 MAP_PRIVATE,但不能同时指定。映射类型是 跨 fork() 保留。
【讨论】: