Operating system 分叉公式?

Operating system 分叉公式?,operating-system,fork,formula,recurrence,Operating System,Fork,Formula,Recurrence,在nforks之后是否有一个封闭的表单来计算进程总数?例如,对于以下内容: int main() { fork(); fork(); fork(); } 我想出了公式n(n+1)/2+n-1。当n=3时,如上所述,8的答案正确。这个公式正确吗?很抱歉,如果操作系统术语在这里被误用,我将使用“直观”的词语来解释这个案例 每个fork从一个进程中创建两个进程。因此,我们可以将单个分叉看作+2-1 从另一个角度考虑,我们会得出这样的结论:在所有进程中(根据程序流)完成n分叉之后,在每个产生的

n
forks之后是否有一个封闭的表单来计算进程总数?例如,对于以下内容:

int main() 
{
 fork();
 fork();
 fork();
}

我想出了公式
n(n+1)/2+n-1
。当
n=3
时,如上所述,
8
的答案正确。这个公式正确吗?

很抱歉,如果操作系统术语在这里被误用,我将使用“直观”的词语来解释这个案例

每个fork从一个进程中创建两个进程。因此,我们可以将单个
分叉
看作
+2-1

从另一个角度考虑,我们会得出这样的结论:在所有进程中(根据程序流)完成
n
分叉之后,在每个产生的进程调用
exit
syscall之前,有一个完整的二叉树,其中
n
级别,每个叶子代表一个进程。因此,进程计数将等于
2^n

下面是一个简单的例子(空白矩形——旧进程,绿色矩形——调用
\u exit
之前的进程):

…但对于n=1索引显然是不正确的,这是一个我混淆的相当简单的问题!