-1

我对一些 linux 内核调度有一些疑问。

1) Does linux kernel(schedular to be specific) always runs on CPU-0?
2) One Scenario:    
   One kernel thread running on CPU - 0, goes into sleep with interrupts disabled.    
   In this case, will the schedular run on other CPU? 
   if Yes, how is the selection made out of the remaining core so as to which will run     
   the schedular, is this decision made while disabling interrupts on CPU - 0?
4

2 回答 2

3

调度器只是一段代码(特别是schedule()函数)。像内核的大多数其他部分一样,它运行在它被调用的任何 CPU 上。

当某个线程想要休眠或处理中断后调用调度程序;这可能发生在所有 CPU 上。

于 2013-10-12T15:37:15.020 回答
1

1)linux内核(具体来说是计划的)是否总是在CPU-0上运行? (不,调度程序可以在任何 CPU 内核上运行。)

2) 一种场景:
在 CPU - 0 上运行的一个内核线程进入睡眠状态并禁用中断。
在这种情况下,调度程序会在其他 CPU 上运行吗? (在 CPU -0 上运行的线程进入睡眠状态。这意味着线程自愿退出 CPU。睡眠代码将调用 linux 调度程序,调度程序将选择另一个线程/进程运行。这与中断有关.禁用中断(例如定时器中断),可以阻止线程被中断并违背其意愿调度到CPU。)

如果是,如何从剩余的核心中进行选择,以便运行
调度程序,这个决定是在禁用 CPU - 0 上的中断时做出的吗?

(希望这可以帮助!)

于 2016-06-23T09:40:39.947 回答