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

时间:2011-12-11 11:50:55

标签: linux multithreading process scheduling

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

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

3 个答案:

答案 0 :(得分:37)

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

所以任务(内核中的task_struct),在调度程序的上下文中,是被调度的东西,可以是一些内核线程,如kworkerkswapd,多线程进程的某些用户线程(如firefox),或<的单线程< em>单线程进程(如bash),用该单线程进程识别。

processthreads的非空有限集(有时是单身),共享相同的virtual address space(以及file descriptors,{{3}等其他内容等等......)。另请参阅working directorycredentials(7)等....

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

答案 1 :(得分:22)

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

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

答案 2 :(得分:-3)

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