有谁熟悉os/161可以帮我回答几个问题吗?
子 pid,父 pid 究竟是如何工作的。
我知道,当您调用时,thread_fork()
您正在基于当前线程创建另一个线程,新线程应该具有自己的唯一 ID 和不同的文件描述符表。在从 中sys_fork
创建一个孩子时curthread
,除了pid之外,孩子与父母相同。但我对 pid 和父 pid 的工作方式感到困惑。
这是我对进程表的解释。整个系统只有一个进程表。现在我有parent_pid
每个my_pid
线程。
- 一个父线程可以有多个子线程(通过不断调用sys_fork
)。
-一个孩子只能有一个父母。
- 每当sys_fork
被调用时,都会创建一个孩子,并将parent_pid
这个孩子的 pid 设置为创建这个孩子的线程的 pid。
-pid of 1 用于引导/菜单线程。
在理解进程表的工作原理方面,我是否走在正确的轨道上?
最后一个问题:对于sys_waitpid()
:只有父母可以使用waitpid
?他们只能等待他们的孩子吗?孩子可以waitpid
在父母身上使用(或者这会导致死锁)吗?
我一直在用谷歌搜索,但我发现了很多矛盾,直到现在我仍然找不到我的问题的明确答案。