fork是在哪里把父进程的内存空间设成只读的
fork系统调用会使父子进程共享mm,然后在缺页中断中实现写时复制,那么我理解在do_fork里面会把mm下的vma都设置成只读,可以我却找不到这段代码,copy_mm里面也没有。哪位看到过请指点下。本帖最后由 镇水铁牛 于 2015-03-12 23:30 编辑
从fork一直跟,最后在函数copy_one_pte中实现如下:
/*
* If it's a COW mapping, write protect it both
* in the parent and the child
*/
if (is_cow_mapping(vm_flags)) {
ptep_set_wrprotect(src_mm, addr, src_pte);
pte = pte_wrprotect(pte);
}
页:
[1]