您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~


由于CPU的速度太快,不但人跟不上它,连它周围的小伙伴也跟不上它,例如网卡和磁盘(也叫硬盘)。因为短时间内无法解决这种CPU和不同设备间的速度匹配问题,所以对于科学家而言,这其实就造成了对CPU计算机资源的浪费。

那怎么办呢?这难不倒聪明的科学家们——其实就是之前说过的方法——他们给CPU定了两条规则:轮询与中断。

从微观上来说,就是通过这两种方式,将一个CPU完整的工作时间划分为多个连续的时间段,而这些时间段的长短对于人来说极其之短,导致我们根本察觉不到。如果在这些不同的时间段里交替执行不同的工作,只要速度足够快,持续时间足够长,就给人一种计算机可以「一芯多用」错觉:它能一边下载视频,一边听音乐,一边在网上聊天,还能一边编辑excel报表,就像这样:

CPU的分身术:千手观音与齐天大圣_最优解



例如,CPU先下载了100KB字节的视频内容,把它丢给播放器并说「你先放着,我去忙别的了」;然后就暂时结束下载工作,从音频文件中读出的100KB字节内容放到播放设备中去播放;接着再暂时结束播放工作,从网络上接收100KB的字节,输入到显卡,再投射到显示器上给用户看到;接着读取用户从键盘输入的一串汉字,并把它们也显示到显示器上......就这样周而复始。如果这时候,有网络电话打进来了(假设在电脑上接听)。那么CPU同样会在这些任务中再插入一个收发网络语音消息的任务。

如果用户的电脑配置差一点,也就是CPU性能差一点的话,就会明显感觉计算机有点「卡」——从专业的角度来说,这其实不是卡,而是CPU「同时」需要完成的任务太多,而且每个任务都比较重,导致CPU在处理和切换任务时有点忙不过来了。造成这种延时的原因,在宏观层面,抛开性能的原因,科学家们称之为「并发」太高。

是的,这就是轮询、中断、并发这三个概念的内在联系和区别:

前两个是从微观层面来描述计算机的任务时间分配;

后一个则是从宏观层面来说明计算机的任务执行方式(当仅有一个CPU的时候,不管同时执行多少个任务,各个任务始终是被划分到不同的时间段去按顺序执行的,只是因为时间太短让人察觉不到,才会看起来好像是「同时」在做一样)。

不管轮询、中断还是并发,始终都是针对单个CPU而言的。在过去技术条件不成熟的情况下,科学家们只能在有限的资源条件下寻求最优解。但当技术进步以后,这种限制也就随之消失了,从而真正可以做到一边下载视频,一边听音乐,就像这样:

CPU的分身术:千手观音与齐天大圣_最优解_02


不管在微观层面还是宏观层面,这种真正能够同时执行多个任务的工作方式,就叫「并行」。

在我看来,这应该算是两种不同的「分身」法术吧:一种是千手观音,一种是齐天大圣。




感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~