在使用fork创建一个进程的副本时,为了使fork操作更高效,Linux使用了一种众所周知的技术,该技术称为写时复制(Copy on Write),该技术的原理使将内存复制操作延迟到父进程或者子进程向某些内存页面写入数据之前,在只读访问的情况下父进程和子进程可以使用同一个内存页。就是等到修改数据时才真正分配内存空间,这是对程序性能的优化,可以延迟甚至是避免内存拷贝,当然目的就是避免不必要的内存拷贝。
fork创建出的子进程,与父进程共享内存空间。也就是说,如果子进程不对内存空间进行写入操作的话,内存空间中的数据并不会复制给子进程,这样创建子进程的速度就很快了!(不用复制,直接引用父进程的物理空间)。
注意:exec将一个新程序加载到当前进程的内存中并执行。旧程序的内存页将刷出,其内容将替换
为新的数据。然后开始执行新程序。