操作系统中的进程表

问题描述 投票:0回答:2

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

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

operating-system
2个回答
2
投票

你在第一段重复学术上的废话。在现实世界中PCB =“过程上下文块”。也就是说,CPU定义的结构定义了进程的状态。操作系统必须为每个进程(线程)维护PCB。操作系统必须维护定义该过程的其他结构。有一系列结构可以定义PCB之外的过程,例如虚拟内存,特权,时间保持等等。

也许这样的系统存在(我还没有完成Linux开发)但我从未在具有定义进程的单一结构的系统上进行OS开发。

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

如果进程具有子进程,则在其所有子进程(子进程)终止之前,它不能终止。


0
投票

案例1:wait明确地称为父母。在这种情况下,当子进程终止时,父进程将获得其状态,并从进程表中删除子进程。

案例2; wait没有在孩子的父母中明确调用。在这种情况下,当孩子终止时,父母将不会获得其状态,并且该子进程将变成僵尸。在Linux中,这种类型的进程显示为<defunct>。此子(僵尸)进程的条目仍将在进程表中。

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

© www.soinside.com 2019 - 2024. All rights reserved.