📜  门|门CS 2008 |第 66 题

📅  最后修改于: 2021-09-25 06:50:34             🧑  作者: Mango

一个进程执行以下代码

for (i = 0; i < n; i++) fork();

创建的子进程总数为
(A) n
(B) 2 n – 1
(C) 2 n
(D) 2 (n+1) – 1答案:(乙)
解释:

F0       // There will be 1 child process created by first fork
      /     \
    F1      F1    // There will be 2 child processes created by second fork
   /  \    /  \
 F2   F2  F2   F2  // There will be 4 child processes created by third fork
/ \   / \ / \  / \
 ...............   // and so on

如果我们对 i = 0 到 n-1 的上述树的所有级别求和,我们得到 2 n – 1。因此将有 2 n – 1 个子进程。另一方面,创建的进程总数是(子进程数)+1。

注意:最大进程数为 2 n ,可能会因分叉失败而有所不同。有关更多详细信息,请参阅此帖子。

这个问题的测验