📜  门| GATE CS 2008 |第66章

📅  最后修改于: 2021-06-29 21:28:37             🧑  作者: Mango

进程执行以下代码

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

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

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,并且可能由于fork失败而有所不同。有关更多详细信息,请参阅此帖子。

这个问题的测验