我是Linux内核的新手。 目前,我查看了空闲代码并进行了调查。 当处理器在他们自己的runqueue中没有任何taks时,它可能会进入空闲模式,特定的WFI(wating中断)。 (所有我提到的是关于ARM架构而不是X86,所以X86有些问题。) 在WFI状态下,可能其他处理器(不是空闲)想要将它们的任务传播给这个空闲的处理器(通过负载均衡) 。那时一个繁忙的处理器 使任务被模仿。在我看来,当任务被迁移时,空闲处理器应该唤醒immidiatley来处理任务。对?但是,我找不到任何代码唤醒空闲处理器的代码,但只发现了有关将任务注册到空闲处理器的runqueue的代码。创建新任务时,Linux内核如何唤醒空闲处理器?
我想知道在给出新任务时唤醒处理器的机制是什么。 或者它只是将任务从一个队列移动到另一个队列,而不是让它被唤醒,直到被一些不可预测的IRQ唤醒为止( )?
请告诉我真相:)
这是为了线程唤醒,而不是CPU唤醒。 Linux内核3.18及更高版本中不存在PF_WAKE_UP_IDLE标志。 – Zhifei 2017-03-16 08:00:14