プロセス間通信

プロセス間通信(プロセスかんつうしん、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, MailSlotQNX、その他
BinderAndroid

実装例

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

参考文献

関連項目

外部リンク

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.