并行和并发有什么区别?
答:
-
并行(Parallel):当系统有一个以上CPU时,一个CPU执行一个进程,而另一个CPU可以执行另一个进程。两个进程互不抢占CPU资源,可以同时进行。
-
并发(Concurrent):多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,但从逻辑上来看那些任务是同时执行。
并发和并行的区别:
-
并行:多个事情,在同一时间点上同时发生了;且多个任务之间是不互相抢占资源的。
-
并发:多个事情,在同一时间段内同时发生了;且多个任务之间是互相抢占资源的。
-
只有在多CPU的情况中,才会发生并行。否则看似同时发生的事情,其实都是并发执行的。
参考博文:https://cloud.tencent.com/developer/article/1424249 (概念)
参考博文:https://blog.csdn.net/prostitute_virgin/article/details/98955620 (图片)
拓展:
-
单CPU的计算机:在CPU中,同一时间是只能分配一个进程。为了看起来像是“同时干多件事”--Windows这种操作系统是把CPU的时间划分成长短基本相同的时间区间,即”时间片“,通过操作系统的管理,把这些时间片依次轮流地分配给各个应用使用。
-
操作系统时间片的使用是有规则的:某个作业在时间片结束之前,整个任务还没有完成,那么该作业就被暂停下来,放弃CPU,等待下一轮循环再继续做。此时CPU又分配给另一个作业去使用。