内核知道使用共享内存操作分配了哪些内存页.当孩子分叉时,这些页面没有标记为Copy-on-Write,因此它们将在所有进程中保持共享.
这记录在成员中的vm_area_struct数据结构中vm_flags.其中一面旗帜是VM_SHARED.mm/memory.c包含以下函数,用于确定是否应将页面转换为COW
static inline int is_cow_mapping(vm_flags_t flags)
{
return (flags & (VM_SHARED | VM_MAYWRITE)) == VM_MAYWRITE;
}
Run Code Online (Sandbox Code Playgroud)
如果要查看有关如何设置和使用此标志的更多信息,请转至Linux Cross Reference并搜索VM_SHARED.