我正在尝试了解 Linux 如何处理进程调度和线程调度。我读到 Linux 可以调度进程和线程。
Linux 有线程调度器和进程调度器吗?如果是,他们是如何合作的?
最佳答案
Linux kernel scheduler实际上是调度任务,这些任务要么是线程,要么是(单线程)进程。
所以一个任务(内核中的一个task_struct
),在调度程序的上下文中,是被调度的东西,并且可以是一些内核线程,例如kworker
或kswapd
,多线程进程的一些用户线程(例如firefox
),或单线程进程(如bash
)的单线程,用该单线程进程标识。
A process是 threads 的非空有限集(有时是单例)同享virtual address space (以及其他类似 file descriptors 、 working directory 等的东西)。另见 credentials(7) , capabilities(7)等等……
Linux 上的线程是内核线程(在由内核管理的意义上,它也创建自己的线程),由 Linux 特定的 clone 创建。系统调用(也可用于在 Linux 上创建进程)。 pthread_create函数可能是(在 Linux 上)在 clone
上构建的 NPTL和 Gnu Libc (在 Linux 上集成了 NPTL)和 musl-libc .
关于linux - Linux如何处理线程和进程调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8463741/