文章目录
- 1. 并发(Concurrency)
- 2. 并行(Parallelism)
- 3. 总结
在Windows操作系统中,我们可以同时进行多项任务,比如观看电影、聊QQ,或者同时听歌和打游戏。尽管这些任务我们感觉在同一时间内似乎是同时进行的,但实际上,在单个CPU的计算机中,并不是真正意义上的同时执行。
在操作系统底层,CPU的执行是按照时间片的方式进行的。操作系统将CPU的时间划分成相等的时间片,并轮流分配给各个正在运行的应用程序。这样,每个应用程序都会在自己的时间片内得到CPU的执行时间,然后被暂停,等待下一个时间片再继续执行。这种轮流切换的方式使得多个任务看起来是在同时进行,给用户带来了“同时性”的感觉。
假设有一个CPU,它就像是一个电话亭,多个用户(应用程序)轮流使用电话亭里的电话,每个用户在自己的时间片内使用电话,然后让出电话亭给下一个用户。尽管每个用户都在不同的时间片内使用电话亭,但由于切换速度非常快,用户无法感知到这种切换,尽管在Windows操作系统中我们可以看起来同时进行多项任务,但实际上是通过CPU时间片技术实现的,并发地完成的。
并发关注的是多个任务之间如何交替执行,而并行关注的是多个任务之间如何同时执行。
1. 并发(Concurrency)
- 并发是指多个任务交替执行的一种情况。在并发中,多个任务可能在同一时间段内交错执行,但并不一定同时执行。
- 并发通常是针对于单核(单个CPU)或有限数量核心的情况而言的,其中一个CPU在不同任务之间快速切换,以实现多个任务之间的交替执行。
- 并发关注的是任务之间的逻辑关系和调度,多个任务之间可能共享资源,需要通过同步机制来避免竞态条件和数据冲突。
- 并发可以提高系统的吞吐量和性能,但并不一定能够加速单个任务的执行速度。
2. 并行(Parallelism)
- 并行是指多个任务在同一时间段内同时执行的一种情况。在并行中,多个任务真正同时执行,各自独立地运行在不同的处理单元上。
- 并行通常是针对于多核(多个CPU)或分布式系统而言的,其中每个处理单元都可以独立地执行任务,不需要互相干扰或竞争资源。
- 并行关注的是任务的同时执行,各个任务之间相互独立,不需要同步或通信,因此可以充分利用系统资源提高任务的执行速度。
- 并行可以显著提高单个任务的执行速度,特别是对于需要大量计算的任务或数据密集型任务而言。
3. 总结
- 并发是指任务之间可能交替执行,多个任务共享CPU时间片;并行是指多个任务在同一时间段内真正同时执行,各自独立运行在不同的处理单元上。
- 并发是在单个处理单元上进行任务切换和调度,通过时间片轮转等方式实现任务的交替执行;并行是通过多个处理单元同时执行任务,各自独立地运行,不需要任务切换。
- 并发更注重于任务之间的逻辑关系和资源共享,需要考虑同步和互斥机制;并行更注重于任务的同时执行和提高系统性能,不需要考虑同步和通信的开销。