Linux进程和线程任务调度是如何的
看了好久的Linux都没搞懂这个。。。各位帮帮忙
在Linux内核态里面只有task的概念,一个包装task_struct的node结构的红黑树,那么linux如何调度进程、线程的呢?
- 是进程和线程都有task_struct结构;还是进程才有task_struct,说调度进程其实是调度进程的主线程,如果是创建的线程可能是复制的task_struct的结构。
- 进程是无法运行的,是进程中的主线程才能运行,是这样的么?就相当于进程的创建时会创建一个主线程。如果是这样的,那么可以说linux的调度其实就是调度线程了?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
task_struct
对应的是线程,内核调度以task_struct
为单位。task_struct
有字段记录线程的虚拟地址空间。进程和线程是包含的关系。多线程程序中,这些线程属于同一个进程,从task_struct
的角度,它们的虚拟地址空间相同而已.如上一个问题,内核以
task_struct
作为调度单位。进程创建时实际上也是创建一个线程,也就是一个task_struct
,这个线程当然也就是作为该进程的主线程。通俗点说,把线程比作人,进程就是一个家庭。 内核调度是按人进行的。
别光看内核,多线程编程有关的资料里基本都会提这个
例如 https://blog.csdn.net/mm_hh/a...
linux线程又名轻量级进程,有自身的函数调用堆栈和指令序列,但没有独立的地址空间,
linux内核里并没有截然不同的线程和进程区分