littlenewer 发表于 2015-03-09 16:57

fork是在哪里把父进程的内存空间设成只读的

fork系统调用会使父子进程共享mm,然后在缺页中断中实现写时复制,那么我理解在do_fork里面会把mm下的vma都设置成只读,可以我却找不到这段代码,copy_mm里面也没有。哪位看到过请指点下。

镇水铁牛 发表于 2015-03-12 23:29

本帖最后由 镇水铁牛 于 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]
查看完整版本: fork是在哪里把父进程的内存空间设成只读的