微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux内核:线程与进程 – task_struct对thread_info

我读到,Linux不支持线程或轻量级进程的概念,它像任何其他进程一样考虑内核线程.但是这个原则并不是很准确地反映在代码中.我们看到包含一个进程的状态信息的task_struct(如果错误的话请纠正我),并且将thread_info附加到进程内核栈的底部.

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

请让我知道我在这里缺少什么 – 我是linux内核开发的新手.

解决方法

Linux中的线程被视为刚刚分享一些资源的进程.每个线程都有自己的thread_info(在堆栈的底部,就像你说的)和它自己的task_struct.我可以想到为什么将它们作为单独的结构维护的两个原因.

> thread_info是依赖于架构的. task_struct是通用的.> thread_info切入该进程的内核栈的大小,所以应该保持较小. thread_info作为微优化放置在堆栈的底部,使得可以通过舍入大小保存cpu寄存器,从当前堆栈指针计算其地址.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐