美文网首页程序员
并行 VS 并发【转载】

并行 VS 并发【转载】

作者: AQ王浩 | 来源:发表于2015-10-11 21:07 被阅读234次

在计算机发展初期,CPU的计算能力非常有限。计算资源稀缺而王贵。
最早的时候一个CPU只能同时运行一个任务,这简直让人无法忍受。

什么叫只能运行一个程序呢?

这就像大学上自习占座一样,一旦一本书、一张纸、一个包或一个活人
占有了那个桌子,其他人就再也没法用了,无论是在这个人出去上厕所,
踢球,你都不能去用那个桌子。如果胆大包天去偷着坐,这时候
就会有个神秘人突然拍拍你的肩膀告诉你“同学,这里有人”,这就是传说
中的“见鬼的故事”。故事里的作为就是CPU,无论当前任务在使用CPU进行计算,
还是在读写磁盘IO或者进行网络交互,Y都得占用CPU,黑客极客和各种无证
程序员都觉得,这不科学!

于是大家试图通过各种方式来改变这一现象。

首先出现的是多通道程序,程序员们很快写了一个监控程序,发现当前任务不用
CPU计算时,就唤醒其他等待CPU资源的程序,让CPU资源能够得到充分利用。但多通道
的问题是调度乏力,不分青红皂白和轻重缓急,不管是急诊还是普通门诊,该等还是得等。

第二个出场的是分时系统,分时系统是一种协作模式,每个程序运行一小段都得主动把CPU
让出来给其他程序,这样每个程序都有机会得到CPU的一小段时间。这是操作系统的监控
程序也完善了一些,能够处理相对复杂的请求。早期的Window和Mac
OS都是采用这种方式来调用程序的。但是分时系统的问题是,一旦某个程序死循环,系统就
没招了,只能干等着,就像死机一摸一样,程序员说这是不可能接受的。

第三个是多任务系统,程序员们让操作系统接管了所有的硬件资源,变得更加高级智能,
系统进程开始分级,有的是特权级别,有的是平民级别(你就知道,在计算机世界都TM是这个样子),
所有的应用程序以进程和线程方式运行,CPU的分配方式采用了抢占式,就是说操作系统可以强制把CPU
的资源分配给目前最需要的程序。程序员们成功了,几乎完美的控制了一切,并造成了很多任务都是
同时运行的假象,如果用两个字来形容的话,那就是“和谐”,目前OS
X,Unix,Linux,Windows都是采用这种方式进行任务管理的。

抢占式。现行进程在运行过程中,如果有重要或者紧迫的进程到达(其状态必须为就绪),则现运行
进程将被迫放弃处理机,系统将处理机立刻分配给新的到达的进程。

以上都是单核单CPU的情况,但无论线程间的切换多么快,这些都是并发,而不是并行。

  • 并发
    Concurrency

    如果一个系统支持两个或多个动作(Action)同时存在,那就是一个并发的系统。

  • 并行
    Parallelism

    如果一个系统支持两个或多个动作同时执行,那就是一个并行系统。

单个CPU永远无法同时执行两个或以上的任务,但是允许任务同时存在。
所以,只有多核或多个CPU才可能发生并行,如果单核单CPU只能发生并发行为。

参考

MacTalk-人生元编程

相关文章

  • 并行 VS 并发【转载】

    在计算机发展初期,CPU的计算能力非常有限。计算资源稀缺而王贵。最早的时候一个CPU只能同时运行一个任务,这简直让...

  • Golang学习笔记-Goroutines

    并发 首先 go 是一个实现并发的语言,并非并行 并发 vs 并行 并行是在同一时间内,可以同时执行多个任务;并发...

  • 多线程

    概念识别 并行VS并发1、并行:并发是指同一时刻处理事情的能力。2、并发:在单位时间内处理事情的能力。进程VS线程...

  • 并发编程

    1.并发、进程、线程 1.1 并发 VS 并行 并发(Concurrency)是程序本身的一种特性,程序被分为多个...

  • Java Stream的并行实现

    作者: 一字马胡 转载标志 【2017-11-03】 更新日志 并行与并发 关于并发与并行,需要弄清楚的是,并行...

  • Go 基础

    基础 [TOC] 特性 Go 并发编程采用CSP模型不需要锁,不需要callback并发编程 vs 并行计算 安装...

  • java并发之概念篇

    同步VS异步同步和异步通常用来形容一次方法调用。 并发与并行并发指的是多个任务交替进行,而并行则是指真正意义上的“...

  • GCD NSOperation 拾遗

    并发 vs 并行并发: 一段时间内存在多个执行路径,单核cpu,分时执行并发: 同一时刻,存在多个执行路径的任务 ...

  • 服务器并发设计

    并发与并行 并发技术选型 结构并发 状态并发 集群和负载均衡 并发(Coccurrency)和并行(Paralle...

  • 【The Java™ Tutorials】【Concurrenc

    Concurrency vs. Parallelism 并发的关键是你有处理多个任务的能力,不一定要同时。并行的关...

网友评论

    本文标题:并行 VS 并发【转载】

    本文链接:https://www.haomeiwen.com/subject/wwfocttx.html