单核电脑为什么也可以同时执行很多程序?cpu核心越多越好吗?

cpu(central processing unit,中央处理器)是计算机的大脑,所有需要运算和处理的数据都会送给 cpu 处理。现在计算机的 cpu 制造技术已经比较发达,没有几个核心的计算机,似乎都是“老古董”了。那么,计算机 cpu 的核心数到底是什么意思呢?有人说,一个 cpu 核同时只能执行一项计算任务,所以计算机的 cpu 核心数越多越好。那么,这种说法对不对呢?

在回答这个问题之前,我们先来讨论一下为什么你的电脑可以在播放音乐的同时,能玩游戏,甚至你还可以浏览我这篇文章。可能你说,我的电脑cpu有4个核心呢,执行这几个任务小 case。可是,你的鼠标还能动啊,你还可以再打开记事本,还可以同时看一部电影呀。何况,即使只是播放音乐,播放器程序也并不是只有一项计算任务,它自己就包括打开文件,读取文件,解码文件,甚至还能同时显示歌词。再甚至,以前的单核cpu的电脑也可以同时玩游戏和听歌呀,所以,电脑能够同时执行多项任务,显然不能用cpu核心数比较多来解释。那到底为什么呢?

看动画片时,很流畅的动作看着很舒服对不对?其实动画片并不是连续的,它只是很多画面快速切换,让人感觉是连续的。实际上,人的感觉还是比较慢的,1秒中有 60 张图片连续切换,人就感觉不出有间断了。电脑能够同时执行多项任务也是同样的道理,计算机的 cpu 运算速度很快,注意到你的电脑 cpu 主频没?3.2GHz 表示 1 秒钟它可以计算 3200000000 次。很多运算量比较小的任务,即使这种任务有很多个,但是 cpu 很快就处理完了,给人的感觉就是同时完成了。那你可能又说,运算量比较大的任务呢?比如,一部电影播放完毕需要几百分钟呢,那我为什么还能边看电影,边玩游戏呢?

的确,即使功能非常简单的软件, cpu 也很少能够瞬间完成它,但是就算是单核电脑,也确实能够同时运行好几个软件,这是怎么做到的呢?其实这就是“操作系统”的主要工作之一了,操作系统管理着 cpu 的使用权,它决定谁可以使用 cpu 做运算。

有过单片机编程经验的都知道,在裸机(没有操作系统)上开发程序时,遇到 while(1) 类似的死循环,程序就会停在那了,之后的逻辑都不会再有机会处理。

操作系统为任务分配 cpu 使用权时,分为“可剥夺型”和“非剥夺型”分配。对于“可剥夺型”的内核来说,它才不管正在执行的任务乐不乐意,只要又来了一个比你优先级高的任务,那优先级低的任务就得收拾自己的东西(变量,临时数据等)一边等着。等高优先级的任务执行完毕,或者高优先级的任务愿意主动把 cpu 使用权让出来,低优先级的任务才有机会执行。而“非剥夺型”内核就公平的多,它常常使用“时间片”来分配 cpu 使用权,简单来说,就是每个任务排队轮流执行,执行一段时间后,自己到队列尾部去再排队,这样,每个任务都有机会得到 cpu 使用权。

有了操作系统的协调,即使任务很多,计算机也能够有条不紊的逐个处理。还记得上面举得动画片的例子吗?只要计算机协调的快一点,我们人类是感觉不出来有间断的,看起来就好像多个任务同时执行似的。所以,多个任务同时执行,“同时”应该加上引号。

好了,现在可以来考虑“有人说,一个 cpu 核同时只能执行一项计算任务,所以计算机的 cpu 核心数越多越好。”这句话了。的确,一个 cpu 核同时只能执行一项计算任务,但是有了操作系统的协调,一边听歌一边玩游戏并不是问题。那么,真的是“计算机的 cpu 核心数越多越好”吗?并不是,cpu 的处理速度还与主频有关啊,3.2GHz 主频的单核 cpu,我们不能说它的处理速度比双核 1GHz 主频的双核 cpu 慢,对不对?越复杂的东西就越容易出错,cpu 核心越多,通常发热也更大,功耗也更大点。如果你平时只是使用电脑处理文档,根本就用不到太高端的 cpu,功耗更低,发热更低,更稳定的 cpu 才是最适合你的。

只有一个顾客,没有必要开着火车去接她,小轿车更合适。

阅读更多:   杂谈
添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif