全靠它,你的电脑才可以一边听音乐,一边玩游戏

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

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

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031A168G700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券