当前位置首页 > 百科> 正文

并发性(计算机并发性)

2019-04-07 02:10:46 百科
并发性(计算机并发性)

并发性(计算机并发性)

在计算机科学中,并发性(Concurrence)是指在一个系统中,拥有多个计算,这些计算有同时执行的特性,而且他们之间有着潜在的互动。因此系统可进行的运行路径会有相当多个,而且结果可能具有不确定性。并发计算可能会在具备多核心的同一个晶片中複合运行,以优先分时执行绪在同一个处理器中运行,或在不同的处理器执行。

基本介绍

  • 中文名:并发性
  • 外文名:Concurrence
  • 学科:计算机科学
  • 定义:不少于两个事件在同一间隔内发生
  • 有关术语:并行性
  • 作用:提高计算机的效率与性能

简介

计算机作业系统一般都具有并发、共享、虚拟和异步这四个基本特徵。其中,并发特徵是作业系统最重要的特徵,其它三个特徵都是以并发特徵为前提的。并发性 (Concurrence) 是指两个或多个事件在同一时间间隔内发生。通常的程式是静态实体(Passive Entity),在多道程式系统中,它们是不能独立运行的,更不能和其它程式并发执行。在作业系统中引入进程,就是为了使多个程式能并发执行。
并行性和并发性 (Concurrence) 是既相似又有区别的两个概念,并行性是指两个或多个事件在同一时刻发生;而并发性是指两个或多个事件在同一时间间隔内发生。在多道程式环境下,并发性是指在一段时间内巨观上有多个程式在同时运行,但在单处理机系统中每一时刻却仅能有一道程式执行,故微观上这些程式只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程式便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程式,这样,多个程式便可同时执行。

并发性的不同层次

1、数字逻辑层几乎所有事情都是并行的,信号在大量连线上同时传播。
2、在现代处理器里,流水线和超标量特徵就是为了利用指令级并行。
3、专用向量处理器实现一种中层的数据并行;各种多处理器系统中存在很多并行运行的进程;在网际网路上一切事情都并发地进行。
4、程式的并发性。

并发性的优点和缺点

优点

资源利用率更好
程式设计在某些情况下更简单
程式回响更快
提高系统性能

缺点

因为在并发系统下运算可以在运行时彼此互动,系统可进行的运行路径会有相当多个,产生的结果可能具有不确定性(Indeterminacy)。并发使用的分享资源可能变成一个不确定的资源并导致诸如死锁和资源匮乏等问题。

并发计算

概述

并发计算,简单来说,就是将一个计算任务,分区成几个小的部分,让它们同时被计算,之后再汇整计算结果,以完成任务。它跟并行计算(Parallel computing)与分散式计算,有重叠之处,在概念上不同,但常会让人混淆。
并发计算是一种程式运算的特性,可以被视为是并行运算的进一步抽象,它包涵了时间片这种可以被用来实现虚拟并行运算(pseudo parallelism)的技术,因此在实际的物理运作中,计算过程可能是并行,或非并行的。
并行计算是指,当并发计算的程式,在机器平台上同时被运行的状况,因此,并行计算是一种机器运算的形式之一。分散式计算(Distributed computing)则是并行计算的一个特例,它採用计算机网路来进行同步。
实现并发程式有许多方式,依程式语言与作业系统的支持,可以用进程,或是执行绪来实现。它可以运行在单一处理器上,将不同的运行步骤分散在不同时间片中运行,以非并行方式循序运算;它也可以用并行计算来实现,将每个进程指定给处理器组中的某个处理器,以单片机多处理器平台,或是通过网路连结的分散平台来实做。
依照硬体与作业系统的支持,并发计算可以在同一个进程中完成,在同一个进程中以多执行绪来完成,以多个进程来达成,甚至可以分成数个程式来运行。可以用单处理器的循序计算来实现,也可以采并行计算或分散式计算方式实做。但以并行方式来运作并发程式,并不必然会增进运行效率。因为运行结果可能会因为平台特性而改变,也增加它在设计上的难度。

优点

并发计算可以增加产出 - 让并发程式以并行方式运行,在某个特定时间内,可以让数个进程同时完成计算任务,增加了产出。
输入/输出的反应时间加快 - 密集进行输入/输出(I/O)操作的应用程式,多数的时间,都在等待输入或输出操作完成。在等待的时间中,并发计算编程可以让另外的进程来运作。更适当的程式架构 - 某些计算问题或问题的领域,特别适合以并发计算来解决。

并发互动与通信

并发计算中,不同计算单元之间,需要进行通信以保持同步。这些通信方式,在某些并发程式语言中,是被隐藏起来的(例如,利用future方式)。以外显方式来进行通信,可分成两种主要方式:
共享记忆体通信,是指经由改变共享记忆体地址内的数据内容,让不同的并发单元间进行通信,如Java与C#都支持这个方式。使用这种通信类型的并发程式,通常需要套用某种锁定的方式来达成执行绪间的同步,这些锁定技术包括mutex,semaphore,或monitor等。
讯息传递通信,是指通过讯息的交换,使不同的并发单元间同步,如Scala,Erlang与occam。

并行性和并发性的区别

并发的实质是一个物理CPU(也可以多个物理CPU)在若干道程式之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。并发性是关于软体过程分解成进程、执行绪并处理相关的效率、原子性、同步和调度问题。
实现并发技术的关键之一是如何对系统内的多个活动(进程)进行切换。
并行的时间或者活动一定是并发的,但是反之并发的时间或者活动未必是并行的。并行性是并发性的特例,而并发性是并行性的基本。
实行并行性的原因,由于计算机和外部的设备不匹配,输入和输出极大地影响了效率。例如一台计算机的记忆体里只有一个程式在运行,该程式还不能处理它未拥有的数据,并且只有在它获得数据后,它可以继续执行下一步操作,要延续这个程式必须等待输入或输出。既然这个程式控制着个计算机,那幺计算机也必须等待。使得一个计算机等待时间要远超过它处理数据时花的时间。为什幺不把两个程式同时放进记忆体。一旦如此,程式A等待数据时,处理器就可以转向程式B。还可以继续推广,有两个或更多的程式装入记忆体以便更好的利用记忆体。一般来说,装入记忆体的程式越多,处理器的利用率也就越高,这是相对的。
那幺计算机是如何进行处理的呢?处理器在一个机器周期中捕获并执行单个指令。如果处理器在同一时刻只能处理一条指令,那幺它是不可能同时处理两个程式。因此,儘管多道程式可以共享记忆体,但是只有一个程式是活跃的。并行性是指“在同一时刻”,多核处理器能够同时运行多个程式。并发性是指“在一段时间内”一个处理器可以并发的处理多个程式。
一个并发程式是指能同时执行通常不相关的各种任务。以一个游戏伺服器为例子:它通常是有各种组件组成,每种组件都跟外部世界进行着複杂的信息互动。一个组件有可能要处理多个用户聊天;另外一些可能要处理用户的输入,并把最新状态反馈给用户;其它的用来进行物理计算。这些都是并发处理。
并发程式并不需要多核处理器。
相比之下,并行程式是用来解决一个单一任务的。以一个试图预估某支股票价格在下一分钟波动情况的金融组件为例,如果想最快速度的知道标普500中哪支股票应该卖出还是买进,你不能一个一个的计算,而是将这些所有的股票同时计算。这是并行。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net