内核代码如何在SMP机器上运行

时间:2014-11-16 18:03:31

标签: linux-kernel

内核代码如何在SMP机器上运行?我知道模块(驱动程序)代码可以运行在几个处理器\核心上,但核心内核代码也是如此?

1 个答案:

答案 0 :(得分:1)

驱动程序是内核的一部分,无论它们是模块化的还是内置的。

调度程序将任务[进程/线程]调度到每个CPU /核心。 Scheduler是一个单独的软件实体,它自己运行并运行其他进程(内核,其驱动程序,内核线程,系统调用,应用程序......)。

根据正在使用的调度算法,每个进程都在调度程序上运行。

调度程序决定哪个进程应该在哪个CPU /核心上运行

Ex:说Round Robin Scheduler,它为进入" Ready Queue [RQ]"的每个进程保留一个时间片。如果调度程序发现任何处理器/内核空闲并且RQ中有进程,它会在定时器达到时间片限制时启动定时器以生成中断,并且此中断将触发中断处理程序中的调度程序,以及来自RQ将被赋予空闲核心以供执行/运行。

因此,在任何时候,如果有足够的任务要运行,所有处理器都可以运行任务,从而实现高吞吐量。