基本議題:並行,併發,和分佈

本文的誕生也不過得源於在我曾經開始談論關於π演算 (π-calculus)時的帖子中所提出的問題,但是我認爲這的確是有趣到足以置頂的帖子。如果聽見某人談論關於計算機和軟件時,有三個詞常常會出現在你的耳邊:並行(parallel),併發(concurrent)和分佈(distributed).乍一聽,它們似乎指代的是同一類事物,但是實際上,它們是三類不同的事物,它們之間的差異舉足輕重。


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


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


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


分佈(Distribution)討論關於由多個物理設備通過網絡連接組成的系統。

它是一項基礎性研究,目的在於研究如何組織構建依據需要拆分後位於各個不同實際位置,不同通信限定條件物理設備的系統。如果你有一個特別設計來在大量不同的物理硬件上同時運行各自程序的系統,但是它們某些情況下也是單獨的系統,這就是分佈式系統。


分別舉例:

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

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

3分佈式系統的例子類似writely(google提供的一個文檔在線編輯,共享的web服務)這樣的軟件。它運行於網頁瀏覽器中,使用writely你能夠在瀏覽器中對文檔進行編輯,並且可以與其他人共享的方式進行編輯,這樣一來你可以擁有三個或者四個瀏覽器同時對文檔進行編輯。就本系統而言每個瀏覽器運行自己的java應 用程序來與服務器進行交互,並通過消息機制相互通信;它們沒有任何修改文本操作的實際代碼。服務器也沒有任何關於類似繪製客戶端界面的代碼,服務器只負責 與客戶端通信,接收並處理來自客戶端的編輯命令,並將更新信息送回,這樣所有的用戶界面都顯示相同的內容。整個系統的設計實現思路圍繞着這樣的思想,這些 不同的子系統都獨立的運行在不同的機器之上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章