fbpx
维基百科

并发计算

并发计算(英語:Concurrent computing,或譯為並行處理共時計算),是一種程式計算的形式,在系統中,至少有兩個以上的計算在同時運作,計算結果可能同時發生。用來實作並行系統(Concurrent system)的程式語言與各種演算法,統稱為並行計算。

並行程式通常被設計為互動式的運算過程,因為它的運算過程是不確定的,在設計上的難度較高。設計並行程式最大的挑戰,在於確保不同運算執行步驟間的互動或是通訊,能以正確的順序進行,同時,也要確保在不同執行步驟間共享的資源,能夠正確被存取。在這個領域的先驅人物有艾兹赫尔·戴克斯特拉東尼·霍爾泊·派克·漢森等人。

概論 编辑

並行計算,簡單來說,就是將一個計算任務,分割成幾個小的部份,讓它們同時被計算,之後再匯整計算結果,以完成任務。它跟平行計算(Parallel computing)與分散式計算,有重疊之處,在概念上不同,但常會讓人混淆。

並行計算是一種程式運算的特性,可以被視為是平行運算的進一步抽象,它包涵了时间片這種可以被用來實作虛擬平行運算(pseudoparallelism)的技術,因此在實際的物理運作中,計算過程可能是平行,或非平行的。

平行計算是指,當並行計算的程式,在機器平台上同時被執行的狀況,因此,平行計算是一種機器運算的形式之一。分散式計算(Distributed computing)則是平行計算的一個特例,它採用計算機網路來進行同步。

實作並行程式有許多方式,依程式語言作業系統的支援,可以用行程,或是執行緒來實作。它可以執行在單一處理器上,將不同的執行步驟分散在不同时间片中執行,以非平行方式循序運算;它也可以用平行計算來實現,將每個行程指定給處理器組中的某個處理器,以單晶片多處理器平台,或是透過網路連結的分散平台來實做。

依照硬體與作業系統的支援,並行計算可以在同一個行程中完成,在同一個行程中以多執行緒來完成,以多個行程來達成,甚至可以分成數個程式來執行。可以用單處理器的循序計算來實作,也可以採平行計算或分散式計算方式實做。

但以平行方式來運作並行程式,並不必然會增進執行效率。因為執行結果可能會因為平台特性而改變,也增加它在設計上的難度。

技術優點 编辑

  • 並行計算可以增加產出 - 讓並行程式以平行方式執行,在某個特定時間內,可以讓數個行程同時完成計算任務,增加了產出。
  • 輸入/輸出的反應時間加快 - 密集進行輸入/輸出(I/O)操作的應用程式,多數的時間,都在等待輸入或輸出操作完成。在等待的時間中,並行計算編程可以讓另外的行程來運作。
  • 更適當的程式架構 - 某些計算問題或問題的領域,特別適合以並行計算來解決。

並行互動與通訊 编辑

並行計算中,不同計算單元之間,需要進行通訊以保持同步。這些通訊方式,在某些並行程式語言中,是被隱藏起來的(例如,利用future方式)。以外顯方式來進行通訊,可分成兩種主要方式:

經由改變共享記憶體位址內的資料內容,讓不同的並行單元間進行通訊,如JavaC#都支援這個方式。使用這種通訊類型的並行程式,通常需要應用某種鎖定的方式來達成執行緒間的同步,這些鎖定技術包括mutexsemaphore,或monitor等。
透過訊息的交換,使不同的並行單元間同步,如ScalaErlangoccam

並行計算模型 编辑

並行性程式語言 编辑

并发性编程语言使用编程语言结构特性进行并发。这些结构涉及到多线程,分布式计算,消息传递,资源共享(包括内存共享)。有时候我们也称这些语言是面向并发的编程语言(COPL)。 如今很多常用的语言都拥有并发的特性,例如:Java和C#。这两种语言底层都是通过内存共享以及锁监听机制的并发模型来实现(尽管消息传递模型如今也是基于内存共享模型实现的)。在消息传递的并发模型世界中,Erlang最具代表性并被广泛使用至今。

很多并发性编程语言更多的是被用作研究(例如:Pict)而非生产用途。尽管如此,在最近20年,还是有很多语言例如 Erlang,Limbo和Occam被用于生产工业。类似这些并发性编程语言还包括:

相關條目 编辑

引用 编辑

  1. ^ AnyEvent (页面存档备份,存于互联网档案馆
  2. ^ Coro (页面存档备份,存于互联网档案馆
  3. ^ Twisted (页面存档备份,存于互联网档案馆
  4. ^
  5. ^ gevent (页面存档备份,存于互联网档案馆

并发计算, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目包含過多行話或專業術語, 可能需要簡化或提出進一步解釋, 2013年4月3日, 請在討論頁中發表對於本議題的看法, 並移除或解釋本條目中的行話, 此條目需要精通或熟悉计算机科学的编者参与及协助编辑, 2013年4月3日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 另見其他需要计算机科学專家關注的頁面, 此條目語意模稜兩可而損及其中立性或準確性, 2013年4月3日, 請在讨论页討論問題所在及加以改善, 此条目的. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目包含過多行話或專業術語 可能需要簡化或提出進一步解釋 2013年4月3日 請在討論頁中發表對於本議題的看法 並移除或解釋本條目中的行話 此條目需要精通或熟悉计算机科学的编者参与及协助编辑 2013年4月3日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 另見其他需要计算机科学專家關注的頁面 此條目語意模稜兩可而損及其中立性或準確性 2013年4月3日 請在讨论页討論問題所在及加以改善 此条目的主題是concurrent computing 中國大陆译名 并发计算 台湾译名 並行計算 关于parallel computing 中國大陆译名 并行计算 台湾译名 平行計算 請見 并行计算 并发计算 英語 Concurrent computing 或譯為並行處理 共時計算 是一種程式計算的形式 在系統中 至少有兩個以上的計算在同時運作 計算結果可能同時發生 用來實作並行系統 Concurrent system 的程式語言與各種演算法 統稱為並行計算 並行程式通常被設計為互動式的運算過程 因為它的運算過程是不確定的 在設計上的難度較高 設計並行程式最大的挑戰 在於確保不同運算執行步驟間的互動或是通訊 能以正確的順序進行 同時 也要確保在不同執行步驟間共享的資源 能夠正確被存取 在這個領域的先驅人物有艾兹赫尔 戴克斯特拉 東尼 霍爾與泊 派克 漢森等人 目录 1 概論 2 技術優點 3 並行互動與通訊 4 並行計算模型 5 並行性程式語言 6 相關條目 7 引用概論 编辑並行計算 簡單來說 就是將一個計算任務 分割成幾個小的部份 讓它們同時被計算 之後再匯整計算結果 以完成任務 它跟平行計算 Parallel computing 與分散式計算 有重疊之處 在概念上不同 但常會讓人混淆 並行計算是一種程式運算的特性 可以被視為是平行運算的進一步抽象 它包涵了时间片這種可以被用來實作虛擬平行運算 pseudoparallelism 的技術 因此在實際的物理運作中 計算過程可能是平行 或非平行的 平行計算是指 當並行計算的程式 在機器平台上同時被執行的狀況 因此 平行計算是一種機器運算的形式之一 分散式計算 Distributed computing 則是平行計算的一個特例 它採用計算機網路來進行同步 實作並行程式有許多方式 依程式語言與作業系統的支援 可以用行程 或是執行緒來實作 它可以執行在單一處理器上 將不同的執行步驟分散在不同时间片中執行 以非平行方式循序運算 它也可以用平行計算來實現 將每個行程指定給處理器組中的某個處理器 以單晶片多處理器平台 或是透過網路連結的分散平台來實做 依照硬體與作業系統的支援 並行計算可以在同一個行程中完成 在同一個行程中以多執行緒來完成 以多個行程來達成 甚至可以分成數個程式來執行 可以用單處理器的循序計算來實作 也可以採平行計算或分散式計算方式實做 但以平行方式來運作並行程式 並不必然會增進執行效率 因為執行結果可能會因為平台特性而改變 也增加它在設計上的難度 技術優點 编辑並行計算可以增加產出 讓並行程式以平行方式執行 在某個特定時間內 可以讓數個行程同時完成計算任務 增加了產出 輸入 輸出的反應時間加快 密集進行輸入 輸出 I O 操作的應用程式 多數的時間 都在等待輸入或輸出操作完成 在等待的時間中 並行計算編程可以讓另外的行程來運作 更適當的程式架構 某些計算問題或問題的領域 特別適合以並行計算來解決 並行互動與通訊 编辑並行計算中 不同計算單元之間 需要進行通訊以保持同步 這些通訊方式 在某些並行程式語言中 是被隱藏起來的 例如 利用future方式 以外顯方式來進行通訊 可分成兩種主要方式 共享記憶體通訊經由改變共享記憶體位址內的資料內容 讓不同的並行單元間進行通訊 如Java與C 都支援這個方式 使用這種通訊類型的並行程式 通常需要應用某種鎖定的方式來達成執行緒間的同步 這些鎖定技術包括mutex semaphore 或monitor等 訊息傳遞通訊透過訊息的交換 使不同的並行單元間同步 如Scala Erlang與occam 並行計算模型 编辑演员模型 Petri网 通信顺序进程並行性程式語言 编辑并发性编程语言使用编程语言结构特性进行并发 这些结构涉及到多线程 分布式计算 消息传递 资源共享 包括内存共享 有时候我们也称这些语言是面向并发的编程语言 COPL 如今很多常用的语言都拥有并发的特性 例如 Java和C 这两种语言底层都是通过内存共享以及锁监听机制的并发模型来实现 尽管消息传递模型如今也是基于内存共享模型实现的 在消息传递的并发模型世界中 Erlang最具代表性并被广泛使用至今 很多并发性编程语言更多的是被用作研究 例如 Pict 而非生产用途 尽管如此 在最近20年 还是有很多语言例如 Erlang Limbo和Occam被用于生产工业 类似这些并发性编程语言还包括 Ada Alef Alice Ateji PX Axum Chapel Charm Cilk Cw C Clojure Clean Concurrent Collections Concurrent Haskell Concurrent ML Concurrent Pascal Curry D E ECMAScript Eiffel Elixir Erlang Faust Fortran Go Hume Io Janus JoCaml Join Java Joule Joyce LabVIEW Limbo MultiLisp Modula 2 Modula 3 Newsqueak occam occam p Orc Oz Mozart Programming System ParaSail Pict Perl中的AnyEvent 1 和Coro 2 Python中的Twisted 3 greenlet 4 和gevent 5 Reia Rust SALSA Scala SequenceL SR Stackless Python StratifiedJS SuperPascal Unicon Termite Scheme TNSDL VHDL XC相關條目 编辑平行計算引用 编辑 AnyEvent 页面存档备份 存于互联网档案馆 Coro 页面存档备份 存于互联网档案馆 Twisted 页面存档备份 存于互联网档案馆 greenlet gevent 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 并发计算 amp oldid 78599176, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。