首页技术文章正文

如何实现计算机多任务运行?

更新时间:2020-10-07 来源:黑马程序员 浏览量:

操作系统可以同时运行多个任务。例如,计算机在同一时刻既可以使用浏览器上网,又可以使用酷我播放音乐,还能挂着QQ工具聊天......所有的这些都体现了多任务运行的现象。

现在,多核CPU已经很普及了。即使使用过去的单核CPU,依然能同时运行多个任务,它是如何办到的呢?答案是操作系统轮流让每个任务交替执行。例如,任务1执行0.01秒以后,再切换到任务2执行0.01秒......以此重复执行下去,原理如图1所示。由于CPU运行的速度实在太快了,任务切换的速度我们的肉眼根本感知不到,所以从表面上来看,所有的任务是在同时运行的。

1602056111788_多任务01.png

图1中要执行的任务有QQ、微信、邮箱、谷歌、酷我等,由于单核CPU每个时间点只能运行一个任务,所以按照时间片轮转的方式(即任务切换一遍后又重复切换),让每个任务执行2us(举例值)的时间,从而形成多个任务同时运行的假象。

实际上真正地并行执行多个任务,只能在多核CPU上完成。不过,计算机要执行的任务数量非常庞大,远远大于CPU内核的数量,所以操作系统也会自动把任务轮流调度到每个核心上执行。接下来,使用一张图来分析多核CPU调度任务的原理,如图2所示。


1602056124219_多任务02.png

图2中,双核CPU相当于计算机有两个单核,每个单核负责执行一个任务,这样就能同时执行两个任务。当这一批的任务运行一段时间(2us)以后,会再分配另外一批任务继续运行,这样就真正地形成了多任务的同时运行。

上述延伸出两个概念:并发和并行。从宏观角度上来讲,两者都能够同时处理多个任务,但是两者又有区别。并行是指两个或者多个任务在同一时刻发生,而并发是指两个或者多个任务在同一时间间隔内发生。比如在某个时间段中,有若干个程序都处于已启动运行到运行完毕之间的状态,某个时刻只能有一个程序运行,这种现象就是并发。

这里面的“同时”、“并发”只是一种宏观上的感受,实际上从微观层面看只是进程/线程的轮换执行,由于切换的时间非常短,所以产生了一起执行的感觉。

猜你喜欢:
Python培训课程

多线程爬虫是什么?多线程爬虫流程分析 

分享到:
在线咨询 我要报名
和我们在线交谈!