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

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

当上下文切换发生时,这是否只发生在一个核心或cpu的所有核心?

Solutions Collecting From Web of "Linux调度程序如何在多核处理器上调度进程?"

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

有调度规则,如优先级或CPU关联(以防止线程迁移到另一个核心并保留缓存数据)。

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

在某些情况下,即使不是全部,每个核心都有一个调度进程。

超级用户也有类似的问题