fork()和vfork()的区别

fork()和vfork()的区别

fork()

fork() 是用于创建新进程的系统调用。通过 fork() 系统调用创建的新进程被称为子进程,调用 fork() 系统调用的进程被称为父进程。子进程的代码与父进程的代码相同。一旦子进程被创建,父进程和子进程都从 fork() 之后的下一条语句开始执行,两个进程同时执行。

vfork()

vfork() 也是一个系统调用,用于创建新的进程。通过 vfork() 系统调用创建的新进程被称为子进程,调用vfork()系统调用的进程被称为父进程。子进程的代码和其父进程的代码相同。子进程暂停父进程的执行,直到子进程完成其执行,因为两个进程共享同一个地址空间。

fork()vfork() 的区别 :

编号 fork() vfork()
1 fork() 系统调用中,子进程和父进程有独立的内存空间。 vfork() 系统调用中,子进程和父进程共享同一个地址空间。
2 子进程和父进程同时被执行。 一旦子进程被执行,父进程就开始执行。
3 fork() 系统调用使用写时拷贝作为替代。 vfork() 系统调用不使用写时复制。
4 fork() 系统调用中,子进程不会暂停父进程的执行。 子进程在 vfork() 系统调用中暂停父进程的执行。
5 一个进程的页面不受其他进程的页面影响。 一个进程的页面被另一个进程的页面所影响。
6 fork() 系统调用使用得多 vfork() 系统调用使用得少。
7 存在地址空间的浪费。 没有浪费地址空间。
8 如果子进程改变了地址空间中的页面,父进程是看不到的。 如果子进程改变了地址空间中的页面,那么它对父进程是可见的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程