vfork() 系统调用与 fork() 具有相同的效果,只不过不复制父进程的页表条目。如今,有了 copy-on-write 和 child-runs-first 语义,vfork 唯一的好处() 并不复制页表条目。如果有一天 Linux 获得了写时复制页表条目,将不再有任何好处。
这些是 Robert Love 的《Linux 内核开发》一书中的一些内容。我不明白的是,不复制页表条目有什么好处?
还有一行字说:”在copy_process()中,task_struct成员vfork_done被设置为NULL”。
这是什么vfork_done?它的作用是什么?
答案1
好处就是性能。复制页表条目需要这些页表的内存,并且需要 CPU 时间来执行复制。