1

我试图弄清楚流程是如何相互联系的。我知道linux内核使用循环链表list_head将不同的进程连接在一起,信息保存在一个名为task_struct的结构中。在task_struct 中有两个字段,children 和sibling,都是list_head 类型。children->next 将指向下一个孩子,而兄弟->next 将指向来自共同父母的下一个兄弟。也就是说,我对这些指针如何指向父/兄弟进程感到困惑。

现在,例如,我有以下进程:R1、P1、P2。R1 是根进程,P1 P2 是它的子进程。R1->children->next 指向 P1 的兄弟字段,因为他们是兄弟姐妹。但是 P2 的兄弟->next 指向哪里呢?它应该指向 P1 的兄弟字段,还是指向 R1 的子字段以形成循环链表?我的直觉告诉我它应该指向 P1 的兄弟字段,但我的 TA 告诉我不然。

为了更清楚,我做了一张照片。任何帮助都会有所帮助。谢谢!

在此处输入图像描述

4

1 回答 1

0

它将指向 R1 的子字段,因为 Linux fs 中的第一个任务存储在循环 dll 中,而且 P2 是 R1 的子项,因此它是合乎逻辑的。猜你的TA是对的。

于 2016-02-06T16:42:28.120 回答