进程和常规函数调用之间的区别?
Difference between a process and a regular function call?
我刚刚了解到流程的概念。
本书将过程定义为"an instance of the running program"。
我还是不太明白这是什么意思。在我看来,一个进程是一个特定的指令,一个程序是运行?或不?
函数调用和进程有什么区别?例如,假设我们有一个名为 main 的函数,我们在其中调用了 printf 函数。 printf 算作一个单独的进程吗? Why/why不是吗?
什么使某些东西成为子进程与父进程?我知道创建子进程的一种方法是调用 fork()。然后根据 fork returns 的整数值,我们可以在子进程中或在父进程中。但是除了有什么东西可以使某些东西成为父进程与子进程之外?
同样根据问题 2 的回答,printf 算作子进程吗?
严格按照 linux 进程进行讨论是 "instances" 书中提到的程序。这意味着它们包含您的程序需要的信息 "execute"。
进程并不是指程序是运行ning的指令,而是指整个运行ning程序。您所指的程序是我假设您编写的代码,但这只是该过程的一个方面。还有各种其他属性,如堆栈内存 space、堆内存 space 和进程 ID 等,所有这些详细信息都存储在称为进程控制块 (PCB) 的数据结构中。
假设你有一个代码的编译版本 "Fibonacci.c" 叫做 fibonacci,如果你从两个不同的终端 运行 它会产生同一个程序的 "two processes"。
函数调用是在进程内部发生的事情。 printf 会在同一个函数中发生。它不算作一个单独的进程,因为它在同一实体内执行。
fork 可以创建子进程。根据经验,我会说在我们当前进程中创建的任何进程都将是一个子进程。尽管这可能不是一个严格的定义。 fork 所做的是复制当前进程,这意味着它通过创建新 PCB 来创建新条目。它与调用 fork 的进程具有相同的代码段,但它将拥有自己的内存 space、进程 ID 等。我不会深入探讨发生 fork 时如何处理内存,但您可以阅读更多关于它在手册页中。
printf 也不是子进程。它驻留在当前进程本身中。
我刚刚了解到流程的概念。
本书将过程定义为"an instance of the running program"。
我还是不太明白这是什么意思。在我看来,一个进程是一个特定的指令,一个程序是运行?或不?
函数调用和进程有什么区别?例如,假设我们有一个名为 main 的函数,我们在其中调用了 printf 函数。 printf 算作一个单独的进程吗? Why/why不是吗?
什么使某些东西成为子进程与父进程?我知道创建子进程的一种方法是调用 fork()。然后根据 fork returns 的整数值,我们可以在子进程中或在父进程中。但是除了有什么东西可以使某些东西成为父进程与子进程之外?
同样根据问题 2 的回答,printf 算作子进程吗?
严格按照 linux 进程进行讨论是 "instances" 书中提到的程序。这意味着它们包含您的程序需要的信息 "execute"。
进程并不是指程序是运行ning的指令,而是指整个运行ning程序。您所指的程序是我假设您编写的代码,但这只是该过程的一个方面。还有各种其他属性,如堆栈内存 space、堆内存 space 和进程 ID 等,所有这些详细信息都存储在称为进程控制块 (PCB) 的数据结构中。 假设你有一个代码的编译版本 "Fibonacci.c" 叫做 fibonacci,如果你从两个不同的终端 运行 它会产生同一个程序的 "two processes"。
函数调用是在进程内部发生的事情。 printf 会在同一个函数中发生。它不算作一个单独的进程,因为它在同一实体内执行。
fork 可以创建子进程。根据经验,我会说在我们当前进程中创建的任何进程都将是一个子进程。尽管这可能不是一个严格的定义。 fork 所做的是复制当前进程,这意味着它通过创建新 PCB 来创建新条目。它与调用 fork 的进程具有相同的代码段,但它将拥有自己的内存 space、进程 ID 等。我不会深入探讨发生 fork 时如何处理内存,但您可以阅读更多关于它在手册页中。
printf 也不是子进程。它驻留在当前进程本身中。