为了账号安全,请及时绑定邮箱和手机立即绑定

在线等,挺急的!Linux进程和线程任务调度是如何的感激不尽

在线等,挺急的!Linux进程和线程任务调度是如何的感激不尽

沧海一幻觉 2019-10-17 18:44:10
看了好久的Linux都没搞懂这个。。。各位帮帮忙在Linux内核态里面只有task的概念,一个包装task_struct的node结构的红黑树,那么linux如何调度进程、线程的呢?是进程和线程都有task_struct结构;还是进程才有task_struct,说调度进程其实是调度进程的主线程,如果是创建的线程可能是复制的task_struct的结构。进程是无法运行的,是进程中的主线程才能运行,是这样的么?就相当于进程的创建时会创建一个主线程。如果是这样的,那么可以说linux的调度其实就是调度线程了?
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

1.是进程和线程都有task_struct结构;还是进程才有task_struct,说调度进程其实是调度进程的主线程,如果是创建的线程可能是复制的task_struct的结构。
task_struct对应的是线程,内核调度以task_struct为单位。task_struct有字段记录线程的虚拟地址空间。进程和线程是包含的关系。多线程程序中,这些线程属于同一个进程,从task_struct的角度,它们的虚拟地址空间相同而已.
进程是无法运行的,是进程中的主线程才能运行,是这样的么?就相当于进程的创建时会创建一个主线程。如果是这样的,那么可以说linux的调度其实就是调度线程了?
如上一个问题,内核以task_struct作为调度单位。进程创建时实际上也是创建一个线程,也就是一个task_struct,这个线程当然也就是作为该进程的主线程。
通俗点说,把线程比作人,进程就是一个家庭。内核调度是按人进行的。
                            
查看完整回答
反对 回复 2019-10-17
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信