首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作系统中的进程表

问操作系统中的进程表
EN

Stack Overflow用户
提问于 2019-03-09 19:45:11
回答 2查看 1K关注 0票数 0

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-09 21:41:50

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

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2019-03-14 16:45:49

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

情况2;未在子级的父级中显式调用wait。在这种情况下,当子进程终止时,它的状态将不会被父进程获取,该子进程将成为僵尸。在Linux中,这种类型的进程显示为<defunct>。该子(僵尸)进程的条目仍将存在于进程表中。

情况3:在子进程的父进程中没有显式调用wait,但是子进程被创建为独立的进程。在这种情况下,如果子项终止,则其条目将从工艺表中释放。它不会变成僵尸。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55077013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档