トップQs
タイムライン
チャット
視点
プロセス間通信
ウィキペディアから
Remove ads
プロセス間通信(プロセスかんつうしん、IPC、英: interprocess communication)はコンピュータの動作において、複数プロセス(の複数スレッド)間でデータをやりとりする仕組み。通信プロセスは、同一コンピュータ内で帰結するローカル、ネットワーク接続された別のコンピュータと相互にリモート、などのほかに多様な観点で分類され、スレッド間の通信帯域幅とレイテンシや扱うデータの種類も多種多様である。メッセージパッシング、同期、共有メモリ、RPCなどのメカニズムやプリミティブがある。
![]() |
プロセス間通信の目的と理由は
- 情報の共有
- 計算の高速化
- モジュール性の向上
- 利便性
- 特権分離
であり、「スレッド間通信」や「アプリケーション間通信」と呼ぶこともある。
Remove ads
主なIPC技法
Remove ads
実装例
要約
視点
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の例である。
- Appleの Apple event(従来は Interapplication Communications、IAC と呼ばれていた)
- Eneaの LINX - Linux向け(オープンソース)と Enea OSE で動作するバージョンがある。
- CMUによるIPC実装[2]
- Javaの Remote Method Invocation (RMI)
- KDEの Desktop Communications Protocol (DCOP)
- Libt2n - Linux上のC++でのみ動作。複雑なオブジェクトや例外を扱える。
- Machカーネルの Mach ポート
- マイクロソフトの ActiveX、Component Object Model (COM)、Microsoft Transaction Server (COM+)、Distributed Component Object Model (DCOM)、動的データ交換 (DDE)、Object Linking and Embedding (OLE)、匿名パイプ、名前付きパイプ、Local Procedure Call、MailSlot、メッセージループ、MSRPC、.NET Remoting、Windows Communication Foundation (WCF)
- ノベルの SPX
- PHPのセッション
- POSIX: mmap、メッセージキュー、セマフォ、共有メモリ
- RISC OSのメッセージ
- Solaris Doors
- System V: メッセージキュー、セマフォ、共有メモリ
- Distributed Ruby
- DIPC (Distributed Inter-Process Communication) - Linux上で System V 系IPCをネットワークにまで拡張する仕組み
- OpenBinder - BeOSが起源で、最近ではAndroidで使われている。
- Solace Systems の IPC Shared Memory Messaging[3]
- QNXのPPS (Persistant Publish/Subscribe) サービス
- SIMPL (Synchronous Interprocess Messaging Project for Linux) - QNX風IPCをLinuxに実装するプロジェクト
Remove ads
脚注
参考文献
関連項目
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads