プロセス間通信

From Wikipedia, the free encyclopedia

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

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

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

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

技法提供しているオペレーティングシステムや環境
ファイル多くの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、その他
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の例である。

脚注

参考文献

関連項目

外部リンク

Related Articles

Wikiwand AI