CPU如何空闲(或运行低于100%)?

时间:2013-08-02 03:33:57

标签: process operating-system hardware cpu interrupt

我首先了解了计算机如何在原始单个存储程序机器方面工作。

现在我正在学习多任务操作系统,日程安排,上下文切换等等。我认为除了一件事之外,我对这一切都有相当好的把握。我一直认为CPU是一种不间断充电的东西。它总是知道下一步该去哪(程序计数器),它会无限制地转到那条指令等。

显然情况并非如此,因为我的桌面计算机CPU并非始终以100%运行。那么CPU如何自行关闭或自行关闭,以及操作系统在这方面扮演什么角色?我猜测CPU上有一个输入允许它掉电......如果没有什么可以安排,操作系统可以设置它,但下一个逻辑问题是它如何重新启动?我猜两件事中的任何一件:

  • 它永远不会完全关闭,只是以非常低的频率运行,等待调度程序再次忙碌
  • 它完全关闭但被中断唤醒

我搜索了所有关于此的信息并且相当空手而归。任何见解都会非常感激。

4 个答案:

答案 0 :(得分:3)

答案取决于硬件,操作系统以及操作系统的配置方式。

它可能涉及您提议的其中一种或两种策略。

基于x86架构的机器的另一种可能性是x86具有HLT instruction,导致核心停止直到它收到外部中断。因此,“空闲”任务可以简单地执行HLT。

答案 1 :(得分:2)

只需转到任务管理器,性能选项卡,并在计算机上完全没有任何操作时观察cpu使用情况。它永远不会停止波动。有一个像Windows运行的操作系统,CPU将始终运行,它永远不会完全关闭。

让显示器显示图像需要cpu处理一个允许它显示任何内容的功能。等

一切都在CPU中运行,就像你的大脑一样,它控制着一切。没有它就没有任何功能。

答案 2 :(得分:1)

如果在操作系统无关时谈到x86架构,可以使用HLT指令。 HLT指令停止CPU直到下一次中断。 有关详细信息,请参阅http://en.m.wikipedia.org/wiki/HLT

其他架构也有类似的指令让CPU休息。

答案 3 :(得分:1)

某些CPU确实有一个'等待中断'指令,允许CPU在无事可做时停止执行指令,并且在发生中断事件之前不会重新唤醒。这在微控制器中特别有用,在微控制器中,它们可以长时间等待发生某些事情。

  • Intel = HLT(暂停)
  • ARM = WFI(等待中断)

有时也会使用“忙等待”,其中CPU处于一个小的“空闲”循环中,检查要做的事情。在这种情况下,CPU仍在运行指令,但操作系统处于空闲状态。它不如使用HLT有效。

现代CPU还可以调整其功耗,并且能够降低时钟速率或关闭未使用的CPU部分。这样,即使核心CPU仍在运行并执行指令,活动空闲状态期间的电源使用量也可能小于活动处理期间的电源使用量。