9

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

现在我正在学习多任务操作系统、调度、上下文切换等。我想我对这一切都有相当好的把握,除了一件事。我一直认为 CPU 只是不停地向前充电的东西。它总是知道下一步要去哪里(程序计数器),并且它会无限地执行该指令等。

显然情况并非如此,因为我的台式计算机 CPU 并不总是以 100% 运行。那么 CPU 是如何自行关闭或限制自身的,操作系统在其中扮演什么角色呢?我猜 CPU 上有一个输入可以让它断电……如果它没有任何安排,操作系统可以设置它,但下一个合乎逻辑的问题是它如何重新启动?我猜测以下两种情况之一:

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

我到处搜索这方面的信息,结果却是空手而归。任何见解将不胜感激。

4

4 回答 4

4

答案是取决于硬件、操作系统和操作系统的配置方式。

它可能涉及您提出的策略中的一个或两个。

基于 x86 架构的机器的另一种可能性是,x86 有一条HLT指令会导致内核停止,直到它接收到外部中断。所以“空闲”任务可以简单地在一个紧密的循环中执行 HLT。

于 2013-08-02T03:51:27.500 回答
2

只需转到任务管理器,性能选项卡,然后在计算机上什么都不做的情况下观察 CPU 使用情况。它永远不会停止波动。拥有像 Windows 这样的操作系统正在运行,cpu 将始终运行,它永远不会完全关闭。

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

一切都通过 CPU 运行,就像你的大脑一样,它控制着一切。没有它,什么都不会起作用。

于 2013-08-02T03:51:18.810 回答
2

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

  • 英特尔 = HLT(暂停)
  • ARM = WFI(等待中断)

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

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

于 2013-08-02T04:01:37.627 回答
1

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

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

于 2013-08-02T03:52:17.420 回答