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

问题描述 投票:25回答:3

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

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

linux multithreading process scheduling
3个回答
37
投票

Linux kernel scheduler实际上是调度任务,这些是线程或(单线程)进程。

因此,在调度程序的上下文中,任务(内核中的task_struct)是正在调度的东西,可以是一些内核线程,如kworkerkswapd,一些多线程进程的用户线程(如firefox),或者单线程进程的单线程(如bash),用单线程进程标识。

process是一个非空的有限集(有时是单身)的threads共享相同的virtual address space(和其他东西,如file descriptorsworking directory等等......)。另见credentials(7)capabilities(7)等....

Linux上的线程是内核线程(在由内核管理的意义上,它也创建自己的线程),由Linux特定的clone系统调用(也可用于在Linux上创建进程)创建。 pthread_create函数可能是在cloneNPTL(在Linux上集成了NPTL)和Gnu Libc上的musl-libc之上构建的(在Linux上)。


22
投票

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

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


-3
投票

在LINUX下没有线程的概念,使LINUX POSIX投诉线程只是另一个进程。当你尝试获取进程id时,它将在任何线程下显示领导进程id。有关更多详细信息,请参阅本书“了解LINUX内核”.Hope

© www.soinside.com 2019 - 2024. All rights reserved.