当调度程序决定切换到空闲任务时,此时动态节拍开始工作,通过禁用周期性节拍直到下一个计时器到期.在此时间跨度之后或在某个时间发生中断时,将重新启用滴答.
与此同时,CPU将以特定于架构的方式进入当之无愧的睡眠状态,从而节省您的能力.看看cpu_idle()arch/x86/kernel/process.c 中的定义.
/*
* The idle thread. There's no useful work to be
* done, so just try to conserve power and have a
* low exit latency (ie sit in a loop waiting for
* somebody to say that they'd like to reschedule)
*/
void cpu_idle(void)
Run Code Online (Sandbox Code Playgroud)
小智 5
“什么都不做”是什么意思??
当 CPU 通电时,会发生一长串事情。一旦通电,CPU 就不能“什么都不做”。它必须做一些事情,因为有一个电压和一个周期性的时钟信号。您可以再次关闭它并且完全不做任何事情,但是当您再次需要它时,您必须通过一长串的事情来获得稳定的时钟信号。
所以空闲线程是一个执行最低限度的线程。即如果两个浮点数相乘需要最少的周期数和最少的电子电路;那么空闲线程将一直乘以两个浮点数。此外,正如 Wang 所说,Linux 内核(在某些配置中)会监视内核何时开始执行空闲线程并将它们切换到较低的频率,从而禁用任何类型的定期操作系统内务管理。当需要内核时,这会导致一些延迟,但使用的功率要少得多。
| 归档时间: |
|
| 查看次数: |
2828 次 |
| 最近记录: |