首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >os161父线程和子线程pid

os161父线程和子线程pid
EN

Stack Overflow用户
提问于 2011-11-11 08:42:13
回答 1查看 3.8K关注 0票数 2

有没有熟悉os/161的人可以回答我几个问题?

子pid,父pid到底是如何工作的。

我知道当您调用thread_fork()时,您是在当前线程的基础上创建另一个线程,新线程本身应该有一个唯一的id和一个不同的文件描述符表。当sys_forkcurthread创建子对象时,除了pid之外,该子对象与父对象相同。但我对pid和父pid的工作原理感到困惑。

这是我对工艺表的解释。整个系统只有一个流程表。现在,我对每个线程都有parent_pidmy_pid

-A父线程可以有多个子线程(通过不断调用sys_fork)。

-A子级只能有一个父级。

调用-Whenever sys_fork,创建一个子级,并将该子级的parent_pid设置为创建该子级的线程的pid。

1的-pid用于引导/菜单线程。

我在理解工艺表是如何工作的方面是正确的吗?

最后一个问题:对于sys_waitpid():只有家长才能使用waitpid?他们只能伺候他们的孩子?子进程是否可以在父进程上使用waitpid (或者这是否会导致死锁)?

我一直在谷歌上搜索,但我发现了太多的矛盾,直到现在我仍然找不到一个明确的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-11 09:27:55

我对OS/161一无所知--但是您的描述听起来很像标准的POSIX系统。因此,这里是如何使用POSIX解决您的问题的,希望它们对OS/161也有意义。

只有父母才会给waitpid()打电话。应用程序就是围绕这一点设计的。如果pid不是调用进程的子进程,waitpid()的POSIX规范要求返回一个错误,并将errno设置为ECHILD

孩子可以通过检查他们自己的parent pidgetppid(3)来确定他们的父母是否已经死亡。如果为1,则其父节点已死亡,且其父节点已设置为init。(init准备好在孤儿子进程死亡时获取它们,这样进程状态就不会停留,并用僵尸进程填充系统进程表。)(现代系统不再有“进程表”,但是pids必须循环使用,并且一些进程控制信息必须保留在内核中,直到调用了某种wait()来获取进程。内存太重要了,不能空闲很长时间。)

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

https://stackoverflow.com/questions/8088373

复制
相关文章

相似问题

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