【问题标题】:How processes in Linux are linked using task_struct?Linux 中的进程如何使用 task_struct 链接?
【发布时间】:2016-02-07 00:49:08
【问题描述】:

我试图弄清楚流程是如何相互关联的。我知道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 告诉我不然。

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

【问题讨论】:

    标签: linux kernel


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-05-29
      • 2014-02-17
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 2019-10-25
      • 1970-01-01
      相关资源
      最近更新 更多