进程创建中的 fork 与 vfork

问题描述 投票:0回答:1

据我所知:

1- 当调用

vfork
时,父进程等待直到子进程终止(但是当子进程调用
exec
时,将创建新的地址空间)。

2-

vfork
创建子进程时不使用
copy-on-write
。父级和子级都使用相同的地址空间。

3-

fork
在创建子进程时使用
copy-on-write

在一本操作系统书籍(操作系统概念,ABRAHAM SILBERSCHATZ)中,我读到在

vfork
中使用
shell
fork
更高效。我不明白为什么?

据我所知,使用

fork
时,在进行任何更改之前,都会调用
exec
,因此我们没有任何更改的页面,也没有任何页面副本(因为
copy-on-write
),因此
fork 
vfork
应该具有相同的性能。

linux unix fork copy-on-write vfork
1个回答
0
投票

据我所知:

vfork:

  • 与子进程共享父进程的内存空间

因此避免了所有分配内存的过程,CPU 需要计算的东西也更少。

这就是 vfork 被认为更高效的主要原因。

Fork 更安全,因为有 2 个独立的内存分配。每个进程都有自己的进程并并行运行,它们不会干扰或等待另一个进程。

VFork 等待子进程执行或退出,这会导致更有序的执行,但也具有更多的内存灵活性。


结论 Vfork 更快,但 Fork 更安全

来源:我自己,AskDifferenceTechDifferences

© www.soinside.com 2019 - 2024. All rights reserved.