Linux如何处理线程和进程调度

whi*_*fox 27 linux multithreading scheduling process

我试图了解Linux如何处理进程调度和线程调度.我读到Linux可以安排进程和线程.

Linux有线程调度程序和进程调度程序吗?如果是,他们如何合作?

Bas*_*tch 39

Linux内核调度器被实际调度的任务,并且这些要么螺纹或(单线程)工艺.

所以在调度程序的上下文中,任务(task_struct内核内部)是被调度的东西,可以是一些内核线程,kworker或者是多线程进程的kswapd某些用户线程(如firefox),或者是单线程一个的单线程处理(像bash),确定与该单线程处理.

一个过程是一个非空有限集(有时是单身)的线程共享相同的虚拟地址空间(和其他东西一样文件描述符,工作目录,等等...).另见凭证(7),功能(7)等....

在Linux线程是内核线程(在内核,这也创造了自己的线程所管理的意义上),由Linux特有的创建克隆系统调用(也可用于在Linux上创建进程).将在pthread_create函数可能建于(在Linux上)上述clone内部NPTLGNU库(其中集成NPTL在Linux上)和MUSL-libc中.


小智 22

Linux下的内核线程实现为共享资源的进程.调度程序不区分线程和进程

有关更多信息,请参见此处:http: //www.linuxquestions.org/linux/articles/Technical/Linux_Kernel_Thread

  • 我认为更好的术语是Linux调度程序正在调度任务(在内核内部以`task_struct`实现),它可以是线程或单线程进程或内核线程。 (2认同)
  • 如果“调度程序不区分线程和进程”,那么调度程序如何在属于同一进程的线程之间以及属于不同进程的两个线程之间切换上下文?属于两个不同进程的线程之间的切换不应该以与线程切换不同的方式完成吗? (2认同)