基本議題 並行,併發,和分布

2021-04-22 13:31:59 字數 1585 閱讀 1837

本文的誕生也不過得源於在我曾經開始談論關於π演算

(π-calculus)

時的帖子中所提出的問題,但是我認為這的確是有趣到足以置頂的帖子。如果聽見某人談論關於計算機和軟體時,有三個詞常常會出現在你的耳邊:並行

(parallel),

併發(concurrent)

和分布(distributed).

乍一聽,它們似乎指代的是同一類事物,但是實際上,它們是三類不同的事物,它們之間的差異舉足輕重。

它們近似相通的地方是,都是描述計算機硬體和軟體組成的系統體系結構,以達到同一時間處理多項任務的目的。不同的則是它們的實現方法及其原因。

並行(parallel),或曰並行**,或曰並行系統都是討論有關如何使用現有系統,通過任務分片(breaking into pieces)技術使得所有的任務都可以同時執行,以期提高執行速度。所以假設你要執行某項複雜的任務:將執行a,b和c三個過程。a和b為c的執行分別進行準備,但是a,b之間不會相互干預。現在你可以先執行a,直到它執行完畢,然後執行b,等待b執行完畢,然後再去執行c。或者你有多餘的cpu,你可以同時執行a和b,當它們執行完畢以後,執行c。當你編寫乙個在同一時間內執行多個程式片段以達到提公升執行速度的程式時,你所做的就是並行。

併發(concurrency)討論關於系統存在多個子部分,其中每個部分設計的明確目的是為能夠響應在同一時間內發生的事件,並不是為了提高執行速度,但卻是系統功能不可或缺的一部分。科技部落格(scienceblogs)的伺服器端系統(the backend system)處理著大量的併發,因為它被設計為能支援成千上萬的訪問者同時閱讀網頁內容,也允許我們同時撰寫和發布新文章而不會影響伺服器系統的正常執行。如果對於系統來說在同一時間內支援大量事件同時發生是必須的功能,它所做的就是併發。

分布(distribution)討論關於由多個物理裝置通過網路連線組成的系統。

分別舉例:

1天氣預報軟體系統通常就是並行結構。通過對流體力學等的大量運算結果,得到精確的天氣**結果需要海量的運算量。將這些運算工作分發給大量cpu去執行,可以滿足甚至高於基本的工作效率。

2數 據庫系統通常被構建為併發結構。糾其原因是存在大量的資料並且大量連續的查詢請求。當乙個使用者開始乙個查詢時,系統不會停下來進行某些操作直到該查詢結 束。而是允許大量的使用者在同一時刻進行查詢。大多數的資料庫甚至保證如果乙個使用者正在執行更新操作,其他的使用者仍然可以在更新未處理過程中執行並行查詢, 查詢總是返回乙個資料庫更新前或者更新後一致的結果,絕不會返回兩個結果。

3

併發和並行

併發和並行的區別 乙個處理器同時處理多個任務和多個處理器或者是多核的處理器同時處理多個不同的任務。併發和並行的區別就是乙個處理器同時處理多個任務和多個處理器或者是多核的處理器同時處理多個不同的任務。前者是邏輯上的同時發生 simultaneous 而後者是物理上的同時發生 併發性 concurren...

併發和並行

並發行和並行性的區別可以用饅頭做比喻。前者相當於乙個人同時吃三個饅頭和三個人同時吃乙個饅頭。今天聽乙個學長說的,感覺挺形象的!併發性 concurrence 指兩個或兩個以上的事件或活動在同一時間間隔內發生。併發的實質是乙個物理cpu 也可以多個物理cpu 在若干道程式之間多路復用,併發性是對有限物...

併發和並行

是針對多處理器維度說的,每個處理器都有獨自計算的能力,多個處理器同時計算就是並行 是針對單處理器的維度說的,每個處理器在同時處理多個任務,其實準確的說,並不是同時執行,只是多個任務直接切換的特別快,快到我們感覺不到任務的切換,使我們只是感覺到多個任務都在執行,所以也有人說巨集觀序列,微觀並行 並行好...