Wikiwand AI

プロセス間通信

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 RMI、CORBA、MSMQ(英語版), MailSlot(英語版)、QNX、その他
BinderAndroid

実装例

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

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

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

脚注

参考文献

関連項目

外部リンク

Related Articles

Timelines

Top Qs

Fact Checks