如何使用task_struct链接Linux中的进程?

时间:2013-02-20 01:31:21

标签: linux kernel

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

现在,例如,我有以下过程:R1,P1,P2。 R1是根进程,P1 P2是其子进程。 R1-> children->接下来指向P1的兄弟字段,因为它们是兄弟姐妹。但是兄弟姐妹 - > P2的下一个指向哪里?它应该指向P1的兄弟字段,还是指向R1的子字段以形成循环链表?我的直觉告诉我它应该指向P1的兄弟姐妹场,但是我的TA告诉了我。

我做了一张照片以使其更清晰。任何帮助都会有所帮助。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:0)

它将指向R1的子字段,因为Linux fs中的第一个任务存储在循环dll中,而P2也是R1的子节点,因此它的逻辑性。猜猜你的TA是正确的。