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

Linux中的进程如何使用task_struct链接?,linux,kernel,Linux,Kernel,我试图弄清楚过程是如何相互联系的。我知道linux内核使用循环链表list\u head将不同的进程连接在一起,信息保存在一个名为task\u struct的结构中。在task_struct中有两个字段,children和sibling,都是list_head类型。子菜单->下一个将指向下一个孩子,而“兄弟姐妹”->“下一个”将指向下一个来自一个普通父级的兄弟姐妹。也就是说,我对这些指针如何指向父进程/同级进程感到困惑 现在,例如,我有以下过程:R1,P1,P2。R1是根进程,P1 P2是它的子

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

现在,例如,我有以下过程:R1,P1,P2。R1是根进程,P1 P2是它的子进程。R1->children->next指向P1的同胞字段,因为他们是同胞。但是P2的兄弟姐妹->下一个指向哪里?它应该指向P1的同级字段,还是指向R1的子字段以形成循环链表?我的直觉告诉我它应该指向P1的兄弟字段,但我的助教告诉我不是这样

我画了一张图,使它更清楚。任何帮助都会有帮助。谢谢


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