串行(Sequential)、并发(Concurrent)、并行(parallel)与分布式(distributed)

纯属复制粘贴 。原文链接地址:http://www.lingcc.com/2011/12/28/11918/#sec-1

这几个概念是谈到并行时,经常遇到的。说实话,自己一直不是特别的清楚,这篇文章就对这几个概念进行区分。

1 串行(Sequential)

串行程序中,程序会顺序的执行每一条指令,在整个程序的运行过程中,仅存在一个运行上下文。即一个调用栈,一个堆。
不存在多个运行上下文。

在传统的命令式语言中,如C/C++,Fortran,Java,C#之类,串行执行是根基。

2 并发(Concurrent)

并发是指,程序在运行的过程中存在多于一个的执行上下文。这些执行上下文一般对应着不同的调用栈。

并发概念的出现,主要有几个方面的原因:

  1. 为了更好的反应问题本身的结构。比如图形程序、服务器程序需要同时记录多个任务的运行情况。
    所以,需要同时存在多个上下文。
  2. 为了利用更多的处理器提升性能。
    这个是大家都了解的,这里就不详述了。
  3. 为了更方便的应对独立的物理设备。比如,Google的搜索任务要一堆的机器协作完成的。
    因此需要同时在每个机器上都有一个程序的上下文运行环境。

3 并行(parallel)

在单处理器上,并发程序虽然有多个上下文运行环境,但某一个时刻只有一个任务在运行。
但在多处理器上,因为有了多个执行单元,就可以同时有数个任务在跑。
这种物理上同一时刻有多个任务同时运行的方式就是并行。

和并发相比,并行更加强调多个任务同时在运行。
而且并行还有一个层次问题,比如是指令间的并行还是任务间的并行。

4 分布式(distributed)

分布式在并行处理的基础上,强调任务正在执行的物理设备,如处理器、内存等等硬件,在物理上是分开的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值