我试图了解Linux如何处理进程调度和线程调度。我读过Linux可以安排进程和线程。
Linux是否具有线程调度程序和进程调度程序?如果是,他们如何合作?
的Linux内核调度器被实际调度的任务,并且这些要么螺纹或(单线程)工艺。
因此,在调度程序的上下文中, 任务 (task_struct内核内部)是正在调度的事物,可以是某些 内核线程( 例如kworker或)kswapd,多线程进程的某些 用户线程 (例如firefox)或单线程。由 单线程进程bash标识 的单线程进程 (如)。
task_struct
kworker
kswapd
firefox
bash
一个过程是一个非空有限集(有时是单身)的线程共享相同的虚拟地址空间(和其他东西一样文件描述符,工作目录,等等…)。另请参阅凭据(7),功能(7)等…
Linux上的 线程 是 内核线程 (在某种意义上,由内核管理,内核也创建自己的线程),由Linux特定的克隆 syscall(也可用于在Linux上创建进程)创建。将在pthread_create函数可能建于(在Linux上)上述clone内部NPTL和GNU库(其中集成NPTL在Linux上)和MUSL- libc中。
clone