什么是并发运行?

什么是并发运行?,第1张

1、并发运行就是让计算机同时运行几个程序或同时运行同一程序多个进程或线程。

2、早期的计算机只具有一个中央处理器(CPU)并且是单核(只有一个运算器)的,这种情况下计算机 *** 作系统采用并发技术实现并发运行,具体做法是采用“ 时间片轮询进程调度算法”,它的思想简单介绍如下: 在冲虚 *** 作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断毁衫地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU及CPU的运算器。

3、现阶段许多计算机具有多个中央处理器或一个处理器具有多个运算器(多核),情况就不同了,如果进程数小于CPU或运算纤判腔器数,则不同的进程可以分配给不同的CPU或运算器来运行,这样,各个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU或运算器数,则仍然需要使用并发技术。

4、有些 *** 作系统并不支持多个CPU或多核CPU,如 ms winodws 9x、3.x,这样的 *** 作系统多个CPU、或多核CPU对它们来说是无用的。

所谓程序的并发执行,是指两个或两个以上程序在计算机系统中同处理已开始执行且尚未结束的状态。程序的并发执行具有以下特点:1、并发程序在执槐渗侍行期间具有相互制约关系;2、程序与计算不再一一对铅吵应;3、并发程喊山序执行结果不可再现。

并发性和并行性通常用于与多线程程序相关的,最早并发性和并行性似乎指的是相同的概念,但其实并发和并行实际上有不同的含义。在这个并发与并行教程中,我将解释这些概念的含义。

为了清楚起见,在本文中,我讨论在单个应用程序(单个进程)中的并发性和并行性。不在多个应用程序、进程或计算机之间。

如果您喜欢视频,这里有本教程对应的视频版本: 并发与并行教程视频

并发是指在一个应用程序中同时存在多个任务在执行,同时刻或者说看起来是同一时刻(并发)。

如果计算机只有一个CPU,应用程序可能不会在同一时间完成多个任务,但在应用程序内部一次完成多个任务。要同时在多个任务上取得进展,CPU会在执行期间在不同的任务之间切换。如下图所示:

并行执行是指计算机具有多个 CPU 或 CPU 内核,并同时在多个任务上取得进展。但是,并行执行并不是指与并行性相同的现象 。稍后我将回到并行性。并行执行如下图所示:

可以进行租明轿并行并发执行,其中线程分布在多个 CPU 中。因此,在同一个 CPU 上执行的线程是并发执行的,而在不同 CPU 上执行的线程是并行执行的。下图说明了并行并发执行。

并行性意味着一个应用程序将其任务拆分成更小的子任务,这些子任务可以并行处理,例如在多个CPU上同时处理。因此,并行性并不是指与并行执行相同的执行模槐乱型,即使它们表面上看起来很相似。

为了实现真正的并行性,您的应用程序必须运行多个线程,每个线程必须在单独的 CPU/CPU 内核/显卡 GPU 内核或类似内核上运行。

下图显示了一个更大的任务,它被分为4个子任务。这4个子任务由4个不同的线程执行,它们运行在2个不同的CPU上。这意味着,这些子任务的部分是并行执行的(在同一CPU上执行的),而部分是并行执行的(在不同CPU上执行的)。

如果这4个子任务由4个线程在各自的CPU上执行(总共4个CPU),那么任务的执行将是完全并行的。然而,要将一个任务分解成与可用CPU数量一样多的子任务并不总是那么容易。通常,将一个任务分解为多个子任务更容易,这些子任务与手头的任务自然匹配,然后让线程调度器负责在可用CPU之间分配线程。

综上所述,并发性指的是多个任务在单个CPU上看似同时取得进展。

另一方面,并行性与应用程序如何并行执行单个任务有关,通常是通过将任务拆分为可以并行完成的子任务。

这两种执行方式可以在同一个应用程序中组合。我将在下面介绍其中一些组合。

应用程序可以是并发的,但不能是并行的。这意味着它似乎同时(同时)在多个任务上取得进展,但应用程序会在每个任务上取得进展之间切换,直到任务完成。在并行线程/CPU中没有真正的任务并行执行。

应用程序也可以是并行的,但不能是并发的。这意味着应用程序一次只能处理一个任务,而这个任务被分解成可以并行处理的子任务。但是,每个任务(+子任务)都是在下一个任务被拆分并并弊肆行执行之前完成的。

此外,应用程序既不能是并发的,也不能是并行的。这意味着它一次只能处理一个任务,而且任务永远不会分解为并行执行的子任务。小型命令行应用程序可能就是这种情况,因为它只有一个作业,太小了,无法并行化。

最后,应用程序还可以通过两种方式同时并发和并行:

第一种是简单的并行执行。如果应用程序启动多个线程,然后在多个CPU上执行,就会发生这种情况。

第二种方式是应用程序同时处理多个任务,并将每个任务分解为子任务,同时以并行的方式执行。但是在这种情况下,并发和并行的一些性能优势可能会丢失,因为计算机中的 CPU 基于在频繁于并发或并行处理。所以并发且并行,可能只会带来微小的性能提升甚至可能是性能损失。因此,除非有特殊目的并且已经提前进行了充分分析和测量,否则不建议采用并发并行模型。

(本篇完)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12474628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存