Linux调度程序(至少在最新的Linux内核(例如3.0)上)正在调度 可调度任务 或仅 调度 任务 。
任务可能是:
- 单线程进程(例如,由
fork
不带任何线程库的进程创建) - 多线程进程内的任何线程(包括其主线程),特别是Posix线程(pthread)
- 核心任务,这是在内核土地内核和住宿内部开始(例如
kworker
,nfsiod
,kjournald
,kauditd
,kswapd
等等…)
换句话说,多线程进程内部的线程的调度方式类似于非线程(即单线程)进程。
低级clone(2)
syscall创建用户级可调度任务(并且可用于创建
fork-ed进程或用于实现线程库,如 pthread
)。除非您是低级线程库实现者,否则您不希望
clone直接使用它。
AFAIK,对于多线程进程,内核(几乎)不是在调度进程,而是内部的每个线程(包括主线程)。
实际上,在调度中有一些线程组和相似性的概念,但是我不太了解它们
如今,处理器通常具有多个内核,并且每个内核都正在运行一个任务(在某个给定的瞬间),因此您确实有多个并行运行的任务。
CPU量子时间分配给任务,而不是分配给进程



