考虑到下面的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。
答案 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%。