当没有用户代码运行时,CPU会发生什么?

Yon*_*ony 2 cpu operating-system rtos task python-idle

os/rtos安排"空闲任务"是合理的.在那种情况下,它不会耗电吗?(执行空闲任务听起来很合理:while(true){})

Jon*_*oni 11

这取决于操作系统和CPU架构.在x86(Intel兼容)上,操作系统可能会执行HLT指令,使CPU等到有趣的事情发生,例如硬件中断.这应该消耗很少的能量.操作系统将执行此操作所花费的时间报告为" 空闲 ",甚至可能将其分配给虚构的"空闲"过程.

因此,在Windows任务管理器中,您会看到系统空闲进程占用90%的CPU,这实际上意味着CPU没有实际的程序可以在90%的时间内运行.

这是一篇关于这个主题的好文章:空闲CPU做什么?


Hot*_*cks 5

从历史上看,它有很多不同的方案,尤其是在降低空闲时的功耗成为问题之前。

通常有一个“空闲”进程/任务以最低优先级运行,因此在没有其他事情可做时总是获得控制权。许多旧系统只会让这个进程运行一个“永远做”的循环,循环体中没有任何后果。我听说过的一种操作系统会在空闲进程中运行机器诊断。许多早期的 PC 会运行内存刷新例程(因为内存需要定期循环,否则会“蒸发”)。

(这个方案的一个好处是 100% 减去空闲进程使用的 CPU 百分比为您提供 % CPU 利用率——操作系统设计人员赞赏的一个特性。)

但大多数现代系统的标准是要么运行“暂停”或“等待”指令,要么在进程控制块中有一个特殊标志,它更直接地告诉处理器停止运行并进入节能模式。