博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
串行(Sequential)、并发(Concurrent)、并行(parallel)与分布式
阅读量:6898 次
发布时间:2019-06-27

本文共 858 字,大约阅读时间需要 2 分钟。

hot3.png

Table of Contents

1 串行(Sequential)

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

不存在多个运行上下文。

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

2 并发(Concurrent)

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

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

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

3 并行(parallel)

在单处理器上,并发程序虽然有多个上下文运行环境,但某一个时刻只有一个任务在运行。

但在多处理器上,因为有了多个执行单元,就可以同时有数个任务在跑。
这种物理上同一时刻有多个任务同时运行的方式就是并行。

和并发相比,并行更加强调多个任务同时在运行。

而且并行还有一个层次问题,比如是指令间的并行还是任务间的并行。

4 分布式(distributed)

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

5 《编译点滴》评

后三个概念涵盖的范围是:并发>并行>分布式。

虽然串行限制了一个栈、一个堆,一个运行上下文,处理器只能死板的按照指令的序列执行。

但,当有多个栈,多个运行上下文时,就有了很多有趣的做法,可以去应对很多有趣的问题。

并行就意味着多个处理器运行多个进程。程序怎么写?bug怎么调?进程怎么通信?等等很多有意思的问题都一下子冒了出来。

转载于:https://my.oschina.net/yoyo1987/blog/348199

你可能感兴趣的文章
mongodb3.x版本用户管理方法
查看>>
配置pacemaker时用到的一些CRM CLI命令
查看>>
RMAN 测试脚本
查看>>
精彩 .NET 2015
查看>>
C# 温故知新 基础篇(11) 泛型<思维导图>
查看>>
include file 与include virtual的区别
查看>>
思維的枷鎖
查看>>
Python天天美味(29) - 调用VC++的动态链接库(DLL)
查看>>
Prim 最小生成树算法
查看>>
金蝶结账的时候出现压缩账套失败 KIC_Compress.KD
查看>>
JavaScriptSerializer 序列化json 时间格式
查看>>
PyCharm 总结
查看>>
Microsoft Enterprise Library 5.0 系列教程(九) Policy Injection Application Block
查看>>
ASP.NET Core 返回 Json DateTime 格式
查看>>
web安全实践(3)再谈基于http的服务器架构剖析
查看>>
SQL SERVER 2005 进行XML查询
查看>>
[CareerCup] 6.5 Drop Eggs 扔鸡蛋问题
查看>>
[Share]18个UI原稿图(包括twitter手稿)
查看>>
丁夏畦同志去世
查看>>
技术方案之外你还能做什么
查看>>