linux是否调度进程或线程?
在阅读了这样的问题之后,我有了一些疑问。请帮助理解。
调度涉及确定何时运行流程以及运行时间的多少。
linux内核是否调度线程或进程?由于内核中的进程和线程没有区别,调度程序如何对待它们?
如何确定每个线程的数量?一个。如果为一个进程确定了一个时间量(例如100us),是在该进程的所有线程之间共享该时间吗?或b。每个线程的数量由调度程序决定吗?
注意:问题1和问题2是相关的,可能看起来相同,但只是想弄清楚事情的进展方式,请在此处将它们都贴上。
回答:
Linux调度程序(至少在最新的Linux内核(例如3.0)上)正在调度 可调度任务 或仅 调度任务 。
任务可能是:
- 单线程进程(例如,由
fork
不带任何线程库的进程创建) - 多线程进程内的任何线程(包括其主线程),特别是Posix线程(pthread)
- 核心任务,这是在内核土地内核和住宿内部开始(例如
kworker
,nfsiod
,kjournald
,kauditd
,kswapd
等等…)
换句话说,多线程进程内部的线程的调度方式类似于非线程(即单线程)进程。
低级clone(2)
syscall创建用户级可调度任务(并且可用于创建fork
-ed进程或用于实现线程库,如 pthread
)。除非您是低级线程库实现者,否则您不希望clone
直接使用它。
AFAIK,对于多线程进程,内核(几乎)不是在调度进程,而是内部的每个线程(包括主线程)。
实际上,在调度中有一些线程组和相似性的概念,但是我不太了解它们
如今,处理器通常具有多个内核,并且每个内核都正在运行一个任务(在某个给定的瞬间),因此您确实有多个并行运行的任务。
CPU量子时间分配给任务,而不是分配给进程
以上是 linux是否调度进程或线程? 的全部内容, 来源链接: utcz.com/qa/407587.html