关于CPU利用率

时间:2015-04-24 10:23:49

标签: c macos

考虑到下面的C代码,我预计CPU利用率会上升到100%,因为处理器会尝试完成这项工作(在这种情况下是无止境的)。在运行可执行文件5分钟后,我发现CPU最多可达到最大值。占48%。我正在运行Mac OS X 10.5.8;处理器:Intel Core 2 Duo;编译:GCC 4.1。

int i = 10;
while(1) {
    i = i * 5;
}

有人可以解释为什么CPU使用率不会达到100%?操作系统是否限制CPU达到100%?

请注意,如果我在循环内添加了“printf()”,则CPU达到88%。据我所知,在这种情况下,处理器还必须写入标准输出流,因此使用率急剧上升。

这是否与每单位时间分配给处理器的作业量有关?

此致 VEN。

2 个答案:

答案 0 :(得分:2)

你有一个多核处理器并且你处于单线程场景中,所以你只使用一个核心全节流...为什么你期望整个处理器的使用在类似的上下文中达到100%?

答案 1 :(得分:0)

同时运行程序的两个副本。这些将使用你的" Core 2 Duo" CPU和整体CPU使用率将达到100%

<小时/> 的修改

  

如果我添加&#34; printf()&#34;在循环内部,CPU达到88%。

printf将一些字符发送到终端/屏幕。发送信息,显示和更新由exe外部的代码管理,这很可能在另一个线程上执行。但是显示几个字符不需要100%这样的线程。这就是为什么你看到100%的核心1和76%的核心2导致你的CPU使用率达到88%。