
コンピュータサイエンスにおいて、プロセス間通信(IPC )とは、コンピュータシステム内で実行中のプロセス間、または複数のそのようなシステム間でデータを共有することです。IPCのメカニズムは、オペレーティングシステムによって提供される場合があります。IPCを使用するアプリケーションは、クライアントとサーバーに分類されることが多く、クライアントがデータを要求し、サーバーがクライアントの要求に応答します。[ 1 ]分散コンピューティングでよく見られるように、多くのアプリケーションはクライアントとサーバーの両方です。
IPCは、カーネルが提供する機能の数を削減するマイクロカーネルやナノカーネルの設計プロセスにおいて非常に重要です。これらの機能は、IPCを介してサーバーと通信することによって取得されるため、通常のモノリシックカーネルと比較して通信量が大幅に増加します。IPCインターフェースは一般的に可変の分析フレームワーク構造を含みます。これらのプロセスは、IPCモデルが依存するマルチベクトルプロトコル間の互換性を保証します。[ 2 ]
プロセス間通信(IPC)メカニズムは、同期型か非同期型のいずれかです。同期プリミティブを使用することで、非同期型IPCメカニズムでも同期的な動作を実現できます。
2 つのプロセスからのデータをマージすると、プロセス間通信や同期などのオーバーヘッドのために、同じデータを単一のスレッドで処理する場合と比較して、コストが大幅に高くなることがよくあります。場合によっては、2 桁以上高くなることもあります。[ 3 ] [ 4 ] [ 5 ]
IPCに対するさまざまなアプローチは、パフォーマンス、モジュール性、ネットワーク帯域幅や遅延などのシステム状況といった、さまざまなソフトウェア要件に合わせて調整されてきました。[ 1 ]
以下は、IPCメカニズムを利用するものの、IPC自体を実装しないメッセージングシステムおよび情報システムです。
以下は、プラットフォームまたはプログラミング言語固有のAPIです。
以下は、IPCを使用するが、それ自体はIPCを実装しない、プラットフォームまたはプログラミング言語固有のAPIです。
{{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク)