更新时间:2020-10-07 来源:黑马程序员 浏览量:
操作系统可以同时运行多个任务。例如,计算机在同一时刻既可以使用浏览器上网,又可以使用酷我播放音乐,还能挂着QQ工具聊天......所有的这些都体现了多任务运行的现象。
现在,多核CPU已经很普及了。即使使用过去的单核CPU,依然能同时运行多个任务,它是如何办到的呢?答案是操作系统轮流让每个任务交替执行。例如,任务1执行0.01秒以后,再切换到任务2执行0.01秒......以此重复执行下去,原理如图1所示。由于CPU运行的速度实在太快了,任务切换的速度我们的肉眼根本感知不到,所以从表面上来看,所有的任务是在同时运行的。
图1中要执行的任务有QQ、微信、邮箱、谷歌、酷我等,由于单核CPU每个时间点只能运行一个任务,所以按照时间片轮转的方式(即任务切换一遍后又重复切换),让每个任务执行2us(举例值)的时间,从而形成多个任务同时运行的假象。
实际上真正地并行执行多个任务,只能在多核CPU上完成。不过,计算机要执行的任务数量非常庞大,远远大于CPU内核的数量,所以操作系统也会自动把任务轮流调度到每个核心上执行。接下来,使用一张图来分析多核CPU调度任务的原理,如图2所示。
图2中,双核CPU相当于计算机有两个单核,每个单核负责执行一个任务,这样就能同时执行两个任务。当这一批的任务运行一段时间(2us)以后,会再分配另外一批任务继续运行,这样就真正地形成了多任务的同时运行。
上述延伸出两个概念:并发和并行。从宏观角度上来讲,两者都能够同时处理多个任务,但是两者又有区别。并行是指两个或者多个任务在同一时刻发生,而并发是指两个或者多个任务在同一时间间隔内发生。比如在某个时间段中,有若干个程序都处于已启动运行到运行完毕之间的状态,某个时刻只能有一个程序运行,这种现象就是并发。
这里面的“同时”、“并发”只是一种宏观上的感受,实际上从微观层面看只是进程/线程的轮换执行,由于切换的时间非常短,所以产生了一起执行的感觉。
猜你喜欢:
Python培训课程
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19