当fork函数被当前进程调用时,内核为新进程创建各种数据结构,并分配它一个唯一的PID,为了给这个新进程创建虚拟存储器,它创建了当前进程的mm_struct、区域结构和页表的
原样拷贝。它将两个进程中的每个页面都标记为只读,并将两个进程中的每个区域结构都
标记为私有的写时拷贝。
当fork在新进程中返回时,新进程现在的虚拟存储器刚好和调用fork时存在的虚拟存储器相同(就是父进程
运行到fork时的虚拟存储器,所以子进程运行的地方是从fork返回时开始的,并不是从头开始)。当这两个进程的任一个后来进行写操作时,写时拷贝机制就会创建新的
物理页面。(深入理解计算机系统二 558页)
通俗一点说,就是在exec之前
两个进程用的是
相同的物理空间(内存区)(所谓用是只读,不能写的&