プロセス間通信(プロセスかんつうしん、IPC、: interprocess communication)はコンピュータの動作において、複数プロセス(の複数スレッド)間でデータをやりとりする仕組み。通信プロセスは、同一コンピュータ内で帰結するローカル、ネットワーク接続された別のコンピュータと相互にリモート、などのほかに多様な観点で分類され、スレッド間の通信帯域幅とレイテンシや扱うデータの種類も多種多様である。メッセージパッシング同期共有メモリRPCなどのメカニズムやプリミティブがある。

プロセス間通信の目的と理由は

であり、「スレッド間通信」や「アプリケーション間通信」と呼ぶこともある。

IPCとアドレス空間のコンセプトの組合せは、アドレス空間分離の基盤である[1]

主なIPC技法

編集
技法 提供しているオペレーティングシステムや環境
ファイル 多くのOS
シグナル 多くのOS。WindowsではCランタイムライブラリでのみ実装しており、IPCとしての利用は推奨していない[要出典]
メッセージキュー 多くのOS
ソケット 多くのOS
UNIXドメインソケット POSIX準拠システム
パイプ POSIX準拠システム、Windows
名前付きパイプ POSIX準拠システム、Windows
セマフォ POSIX準拠システム、Windows
共有メモリ POSIX準拠システム、Windows
メモリマップトファイル POSIX準拠システム、Windows
メッセージパッシング
(shared nothing)
MPI パラダイム、Java RMICORBAMSMQ英語版, MailSlot英語版QNX、その他
Binder Android

実装例

編集

IPCとして使われているAPIはいくつかある。プラットフォームに依存しない主なAPIの例を挙げる。

  • 無名パイプ英語版名前付きパイプ
  • Common Object Request Broker Architecture (CORBA)
  • Freedesktop.orgD-Bus
  • Distributed Computing Environment (DCE)
  • メッセージバス (Mbus) - RFC 3259 にて規定
  • MCAPI (Multicore Communications API)
  • Lightweight Communications and Marshalling (LCM)
  • ONC RPC
  • UNIXドメインソケット
  • XML: XML-RPCSOAP
  • JSON: JSON-RPC
  • Thrift
  • TIPC (TIPC
  • ZeroCInternet Communications Engine (ICE)

以下は、プラットフォーム固有またはプログラミング言語固有のAPIの例である。

脚注

編集
  1. ^ Jochen Liedtke. On µ-Kernel Construction, Proc. 15th ACM Symposium on Operating System Principles (SOSP), December 1995
  2. ^ Inter Process Communication (IPC)”. CMU. 2012年10月4日閲覧。
  3. ^ IPC Shared Memory Messaging

参考文献

編集

関連項目

編集

外部リンク

編集


📚 Artikel Terkait di Wikipedia

OpenCL

Khronos Group 2020年6月30日 ^ Intel、新プログラミング言語「Data Parallel C++」β版公開 マイナビ 2019年11月21日 ^ Data Parallel C++: Programming Accelerated Systems Using C++ and

データ並列性

Steele, Guy L., Data Parallel Algorithms Communications of the ACM December 1986 Blelloch, Guy E, Vector Models for Data-Parallel Computing MIT Press 1990

タスク並列性

CPU "a" で実行されるコード: program: ... do task "A" ... end program CPU "b" で実行されるコード: program: ... do task "B" ... end program この概念は、任意の数のプロセッサに対して一般化できる。

NAMD

Interoperability in a Parallel Molecular Dynamics Code” (postscript). http://www.ks.uiuc.edu/~brunner/Papers/SIAMWS98.ps  ^ “NAMD A Parallel Object-Oriented

フリンの分類

Trans. Comput., Vol. C-21, pp. 948, 1972. ^ Duncan, Ralph, "A Survey of Parallel Computer Architectures", IEEE Computer. February 1990, pp. 5-16. ^ Distributed

並列計算

並列計算(へいれつけいさん、英語: parallel computing)は、特定のコンピュータ作業をいくつかの独立した小さな処理に細分化し、複数の処理装置上でそれぞれの処理を同時に実行させることである。並列コンピューティングや並列処理ともいう。 大きな問題を解いたり、大量のデータを処理したりする過

高性能計算

Conference)で発表される。 なお、Highly Parallel Computing(高並列計算)の頭文字もHPCとなるが、一般にこの分野でHPCはhigh-performance computingの略であり、特に説明などなしにHPCがHighly Parallel Computingの略であることはまずない。

多元宇宙論

英: quantum universes ^ 英: interpenetrating dimensions ^ 英: parallel dimensions ^ 英: parallel worlds ^ 英: alternative realities ^ 英: alternative timelines