问题背景:
今天无意中想了解大数据并发,可是,思来想去我的脑海里只有学习操作系统时的“并发”与并行,于是想翻翻书,彻底弄明白这两个概念。
解决:
并发:两个或以上的活动/事件,在同一时间 间隔 内发生(官话)。重点在于“间隔”,也就是说,只要在一段间隔内有两个动作发生了,那么就属于并发。
举个栗子:
我吃饭的时候都喜欢边吃边看,在我开始到结束吃饭的这个时间间隔中,我的边吃边看或吃一口看一会 这就是并发。(嘴,眼,手,耳朵交替进行,也可以同时进行)
并行:两个或以上的活动/事件,在同一个时刻发生。重点在于“瞬间”,也就是说,多个动作必须在同一个时刻同时发生才算是并行。
举个栗子:
小时候老师留的写田字格,一写就是好几本,当时想出来的办法就是一个手抓两个笔,这样每写一笔就是同时刻同模样的两笔,这就是并行。
类比于物理,并行好像瞬时速度,并发好似平均速度,从数学角度并行是并发的真子集,因为满足并行的条件一定满足并发,反之则不然。
并发的本质在于对有限的物理资源强行复用,对多个用户共享以提高效率。对于单个CPU系统,多个程序的并发执行是宏观概念,微观上其实是顺序执行。对于多CPU系统而言,并发不仅体现在宏观上也体现在微观上这就是并行。
并发的好处:
改善了资源的利用率,提高了系统效率。
并发的劣势:
相对于顺序执行程序而言,增加了多个程序之间切换的复杂性。以及多个程序之间以何种策略运行,如何协调多个程序对于资源的竞争等等。
如何解决劣势:
① “进程”的引入就是为了解决多个程序的切换。
② 操作系统的各种策略和机制就是为了解决多进程竞争和协作。