Linux调度程序如何在多核处理器上调度进程?

时间:2013-11-22 10:55:51

标签: linux multithreading process

多核处理器利用线程级并行,这意味着多个线程并行运行。假设一个进程只有一个线程,那么其他核心在执行这个进程时是否保持空闲状态?在linux系统中,调度程序将进程和线程视为一项任务。它在调度时不区分进程和线程。那么,这是否意味着不同的内核并行执行不同进程的不同线程?

当发生上下文切换时,这是仅针对一个内核还是针对cpu的所有内核发生的?

1 个答案:

答案 0 :(得分:2)

你是对的:从Linux调度程序的角度来看,进程和线程是相同的。这些任务按照调度程序的规则排队等待轮到他们。

存在诸如优先级或CPU亲和性之类的调度规则(以防止线程迁移到另一个核心并保留缓存数据)。

上下文切换可能在每个固定时间(时间片)上发生在核心上,因为CPU会定期自动运行某些内核代码以允许抢占。根据调度程序的规则,可以为多个时间片运行任务。当线程调用使其不可运行的函数时(例如,等待IO),也可能发生上下文切换。

在某些情况下,如果不是全部,每个核心都有一个调度过程可以完成所有这些。

superuser

上也有类似的问题