Operating system 操作系统中的进程表

Operating system 操作系统中的进程表,operating-system,Operating System,有些文章认为,进程表是所有PCB(进程控制块)的集合,而PCB是包含所有进程信息(堆栈指针、寄存器集、程序计数器等)的结构 进程的条目将保留在它终止并释放资源的表单元中 到目前为止,我们所知道的一切都是正确的,但在某些情况下,进程条目从表中释放,甚至进程仍然没有终止吗? 例如在创建子进程的情况下,当父进程调用wait系统调用时,子进程的条目应该从进程表中释放,因为在这种情况下,父进程可以通过wait系统调用(函数)来处理子进程的存在状态,有些文章采用了这个概念,我不知道我是否误解了, 有人能让我

有些文章认为,进程表是所有PCB(进程控制块)的集合,而PCB是包含所有进程信息(堆栈指针、寄存器集、程序计数器等)的结构 进程的条目将保留在它终止并释放资源的表单元中

到目前为止,我们所知道的一切都是正确的,但在某些情况下,进程条目从表中释放,甚至进程仍然没有终止吗? 例如在创建子进程的情况下,当父进程调用wait系统调用时,子进程的条目应该从进程表中释放,因为在这种情况下,父进程可以通过wait系统调用(函数)来处理子进程的存在状态,有些文章采用了这个概念,我不知道我是否误解了,
有人能让我更清楚地了解这个概念吗

你在重复第一段中的学术废话。在现实世界中,PCB=“Process Context Block.”即定义进程状态的CPU定义的结构。操作系统必须为每个进程(线程)维护一个PCB。操作系统还必须维护定义流程的其他结构。有一系列结构定义了PCB之外的进程,例如虚拟内存、特权、计时等等

也许存在这样一个系统(我没有做过Linux开发),但我从来没有在一个定义进程的单一结构的系统上做过操作系统开发

在操作系统中,从另一个进程启动的进程可以是子进程,也可以是分离的进程。子流程是链接到创建它的流程的流程。分离的进程是未链接的进程


如果进程有子进程,则在其所有子进程(子进程)终止之前,它无法终止

你在重复第一段中的学术废话。在现实世界中,PCB=“Process Context Block.”即定义进程状态的CPU定义的结构。操作系统必须为每个进程(线程)维护一个PCB。操作系统还必须维护定义流程的其他结构。有一系列结构定义了PCB之外的进程,例如虚拟内存、特权、计时等等

也许存在这样一个系统(我没有做过Linux开发),但我从来没有在一个定义进程的单一结构的系统上做过操作系统开发

在操作系统中,从另一个进程启动的进程可以是子进程,也可以是分离的进程。子流程是链接到创建它的流程的流程。分离的进程是未链接的进程

如果进程有子进程,则在其所有子进程(子进程)终止之前,它无法终止

案例1:
wait
在父级中显式调用。 在这种情况下,当子进程终止时,父进程将获得其状态,并且子进程的条目将从进程表中删除

案例2;
wait
未在父级中为子级显式调用。 在这种情况下,当子进程终止时,父进程将不会获取其状态,并且该子进程将成为一个僵尸。在Linux中,这类进程显示为
。此子(僵尸)进程的条目仍将存在于进程表中

案例3:
wait
未在子进程的父进程中显式调用,但子进程是作为分离进程创建的。 在这种情况下,如果子进程终止,则其条目将从进程表中释放。它不会变成僵尸。

案例1:
wait
在父级中显式调用。 在这种情况下,当子进程终止时,父进程将获得其状态,并且子进程的条目将从进程表中删除

案例2;
wait
未在父级中为子级显式调用。 在这种情况下,当子进程终止时,父进程将不会获取其状态,并且该子进程将成为一个僵尸。在Linux中,这类进程显示为
。此子(僵尸)进程的条目仍将存在于进程表中

案例3:
wait
未在子进程的父进程中显式调用,但子进程是作为分离进程创建的。
在这种情况下,如果子进程终止,则其条目将从进程表中释放。它不会变成僵尸。

答案非常合理,但如果子进程在父进程之前终止,然后父进程调用该子进程的等待系统调用,会发生什么?如果不调用子进程上的等待系统调用,则父进程如何知道子进程何时结束?这取决于系统,但通常情况下,等待将结束。答案非常合理,但如果子进程在父进程之前终止,则父进程调用该子进程的等待系统调用,会发生什么情况?如果一个子系统没有调用wait系统调用,那么父系统如何知道该子系统何时终止了finish?这取决于系统,但通常情况下,等待将结束。