gpt4 book ai didi

Linux 内核 : Threading vs Process - task_struct vs thread_info

转载 作者:IT王子 更新时间:2023-10-29 00:09:37 26 4
gpt4 key购买 nike

我读到 Linux 不支持线程或轻量级进程的概念,它认为内核线程与任何其他进程一样。然而,这个原则并没有很准确地反射(reflect)在代码中。我们看到保存进程状态信息的 task_struct(如果错误请纠正我)以及附加到进程内核堆栈底部的 thread_info。

现在的问题是,当 linux 应该像任何其他进程一样解释线程时,为什么代码通过 thread_info 支持独立线程的概念?

请让我知道我在这里遗漏了什么——我是 linux 内核开发的新手。

最佳答案

Linux 中的线程被视为恰好共享某些资源的进程。每个线程都有自己的thread_info(如您所说,位于堆栈底部)和自己的task_struct。我可以想到将它们作为单独的结构进行维护的两个原因。

  1. thread_info 依赖于架构。 task_struct 是通用的。
  2. thread_info 削减了该进程的内核堆栈大小,因此它应该保持较小。 thread_info 被放置在堆栈的底部作为微优化,可以通过向下舍入堆栈大小来从当前堆栈指针计算其地址,从而节省 CPU 寄存器。

关于Linux 内核 : Threading vs Process - task_struct vs thread_info,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21360524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com