看了好久的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,这个线程当然也就是作为该进程的主线程。通俗点说,把线程比作人,进程就是一个家庭。内核调度是按人进行的。
添加回答
举报
0/150
提交
取消