理解并发和并行


目录
  • 1. 逻辑控制流
  • 2. 并发和并行的解释

1. 逻辑控制流

程序的指令执行的一系列逻辑控制流程,就叫做逻辑控制流,或者简称逻辑流

如下图,一个运行着三个进程的系统,处理器的一个物理控制流程被分成三个逻辑流,每个进程一个。三个逻辑流的执行是交错的。进程A运行了一会儿,然后是进程B开始运行到完成。然后进程C运行了一回儿,进程A接着运行直到完成。最后,进程C可以运行到结束了。

进程是轮流使用处理器的。每个进程执行它的流的一部分,然后被抢占(暂时挂起),然后轮到其他进程。

2. 并发和并行的解释

一个逻辑流的执行在时间上与另一个流重叠,成为并发流,这两个流被称为并发地运行。更准确地说,流X和Y互相并发,当且仅当X在Y开始之后和Y结束之前开始,或者Y在X开始之后和X结束之前开始

如上图中,进程A和B并发地运行,A和C也一样。但是B和C没有并发地运行,因为B的最后一条指令在C的第一条指令之前执行。所以,多个流并发地执行的一般现象被称为并发(concurrency)

一个进程和其他进程轮流运行的概念称为多任务(multitasking)。一个进程执行它的控制流的一部分的每一时间段叫做时间片(time slice)。因此,多任务也叫做时间分片(time slicing)。

并发流的思想与流运行的处理器核数或者计算机数无关。如果两个流在时间上重叠,那么他们就是并发的,即使它们是运行在同一个处理器上。

另一方面,并行流是并发流的一个真子集。如果两个流并发地运行在不同的处理器核或者计算机上,那么我们称他们为并行流,他们并行地运行(running in parallel),且并行地执行(parallel execution)。所以,多个流并发地在多个处理器核上执行的现象称为并行(parallel)