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寄存器,从当前堆栈指针计算其地址.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...