一些文章采用进程表是所有PCB (进程控制块)集合,而PCB是包含所有进程信息(堆栈指针、寄存器组、程序计数器等)的结构。并且进程的条目将保留在表单元中,它被终止并且其资源被释放
到目前为止,我们所知道的一切都是正确的,但是在某些情况下,进程条目从表中释放,甚至进程仍然没有终止?例如在创建子进程时,父进程调用等待系统调用时,子进程条目应该从进程表中释放,因为在这种情况下,父进程可以通过等待系统调用(函数)来处理子进程的现有状态,一些文章采用了这个概念,我不知道我是否误解了,有人可以为我解释清楚这个概念吗?
发布于 2019-03-09 21:41:50
你在重复第一段中的学术废话。在现实世界中,PCB =“进程上下文块”。也就是说,定义进程状态的CPU定义的结构。操作系统必须为每个进程(线程)维护一个PCB。操作系统还必须维护定义该过程的其他结构。有一系列的结构定义了PCB之外的进程,比如虚拟内存、特权、计时等等。
也许这样的系统是存在的(我没有做过Linux开发),但是我从来没有在只有一个定义进程的单一结构的系统上做过OS开发。
在操作系统中,从另一个进程启动的进程可以是子进程,也可以是分离的进程。子流程是链接到创建它的流程的流程。分离的进程是未链接的进程。
如果进程有子进程,则在其所有子进程(子进程)都已终止之前,它不能终止。
发布于 2019-03-14 16:45:49
情况1:在父级中显式调用wait。在这种情况下,当子进程终止时,父进程将获得其状态,并且子进程的条目将从工艺表中删除。
情况2;未在子级的父级中显式调用wait。在这种情况下,当子进程终止时,它的状态将不会被父进程获取,该子进程将成为僵尸。在Linux中,这种类型的进程显示为<defunct>。该子(僵尸)进程的条目仍将存在于进程表中。
情况3:在子进程的父进程中没有显式调用wait,但是子进程被创建为独立的进程。在这种情况下,如果子项终止,则其条目将从工艺表中释放。它不会变成僵尸。
https://stackoverflow.com/questions/55077013
复制相似问题