プロセス間通信

コンテンツへジャンプ
フリー百科事典『ウィキペディア』より
(プロセス間通信からリダイレクト)
プロセス間ネットワーク通信を介してインターネット経由で多数のパーソナルコンピュータを接続するグリッドコンピューティングシステム

コンピュータサイエンスにおいてプロセス間通信IPC )とは、コンピュータシステム内で実行中のプロセス間、または複数のシステム間でデータを共有することです。IPCのメカニズムは、オペレーティングシステムによって提供される場合があります。IPCを使用するアプリケーションは、多くの場合、クライアントとサーバーに分類され、クライアントがデータを要求し、サーバーがクライアントの要求に応答します。[ 1 ]多くのアプリケーションは、分散コンピューティングでよく見られるように、クライアントとサーバーの両方の機能を果たします

IPCは、マイクロカーネルナノカーネルの設計プロセスにおいて非常に重要であり、カーネルが提供する機能の数を削減します。これらの機能は、IPCを介してサーバーと通信することで実現されるため、通常のモノリシックカーネルと比較して通信量が大幅に増加します。IPCイン​​ターフェースは、一般的に可変の解析フレームワーク構造を包含します。これらのプロセスは、IPCモデルが依存するマルチベクトルプロトコル間の互換性を確保します。[ 2 ]

IPC メカニズムは同期型と非同期型のいずれかです。同期プリミティブは、非同期 IPC メカニズムで同期動作を実現するために使用できます。

デメリット

[編集]

2つのプロセスからのデータをマージすると、単一のスレッドで同じデータを処理する場合と比べて、プロセス間通信や同期などのオーバーヘッドにより、2桁以上も大きなコストがかかる可能性があります。[ 3 ] [ 4 ] [ 5 ]

アプローチ

[編集]

IPCに対するさまざまなアプローチは、パフォーマンスモジュール性、ネットワーク帯域幅遅延などのシステム状況など、さまざまなソフトウェア要件に合わせて調整されてきました[ 1 ]

方法簡単な説明提供元(オペレーティングシステムまたはその他の環境)
ファイルディスクに保存されたレコード、またはファイル サーバーによって要求に応じて合成されたレコードで、複数のプロセスからアクセスできます。ほとんどのオペレーティングシステム
通信ファイル1960年代後半のIPCの独特な形式で、プラン99Pプロトコルに最も近いものダートマスタイムシェアリングシステム
シグナル;非同期システムトラップあるプロセスから別のプロセスに送信されるシステム メッセージ。通常はデータの転送には使用されず、パートナー プロセスにリモートでコマンドを送信するために使用されます。ほとんどのオペレーティングシステム
ソケットネットワークインターフェースを介して、同じコンピュータ上の別のプロセスまたはネットワーク上の別のコンピュータに送信されるデータ。ストリーム指向(TCP ; ソケットを介して書き込まれるデータは、メッセージ境界を維持するためのフォーマットが必要です)または、まれにメッセージ指向(UDPSCTP)です。ほとんどのオペレーティングシステム
Unixドメインソケットインターネットソケットに似ていますが、すべての通信はカーネル内で行われます。ドメインソケットはファイルシステムをアドレス空間として使用します。プロセスはドメインソケットをinodeとして参照し、複数のプロセスが1つのソケットで通信できます。すべてのPOSIXオペレーティングシステムとWindows 10 [ 6 ]
メッセージキューソケットに似たデータストリームですが、通常はメッセージ境界が保持されます。通常はオペレーティングシステムによって実装され、複数のプロセスが相互に直接接続することなく、メッセージキューの読み書きを可能にします。ほとんどのオペレーティングシステム
匿名パイプ標準入出力を用いた単方向データチャネル。パイプの書き込み側に書き込まれたデータは、パイプの読み取り側から読み取られるまでオペレーティングシステムによってバッファリングされます。2つのパイプを反対方向で使用することで、プロセス間の双方向通信を実現できます。すべてのPOSIXシステム、Windows
名前付きパイプファイルのように扱われるパイプ。匿名パイプのように標準入出力を使用する代わりに、プロセスは名前付きパイプに対して、通常のファイルのように書き込みと読み取りを行います。すべての POSIX システム、Windows、AmigaOS 2.0+
共有メモリ複数のプロセスに同じメモリブロックへのアクセス権が付与され、プロセスが相互に通信するための共有バッファーが作成されます。すべてのPOSIXシステム、Windows
メッセージパッシング複数のプログラムがメッセージキューやOS管理外のチャネルを使用して通信できるようにします。並行性モデルでよく使用されます。LPCRPCRMIMPIパラダイム、Java RMICORBACOMDDSMSMQMailSlotsQNXなどで使用されます。
メモリマップファイルRAMにマッピングされたファイルは、ストリームに出力するのではなく、メモリアドレスを直接変更することで変更できます。これは、標準ファイルと同じ利点があります。すべてのPOSIXシステム、Windows

アプリケーション

[編集]

リモートプロシージャコールインターフェース

[編集]

プラットフォーム通信スタック

[編集]

以下は、IPC メカニズムを利用しながらも、それ自体は IPC を実装していないメッセージングおよび情報システムです。

オペレーティングシステムの通信スタック

[編集]

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

分散オブジェクトモデル

[編集]

以下は、IPC を使用するが、それ自体は IPC を実装していない、プラットフォームまたはプログラミング言語固有の API です。

参照

[編集]

参考文献

[編集]
  • リチャード・スティーブンス(1999年)『UNIXネットワークプログラミングプロセス間通信』第2巻(第2版)プレンティス・ホール出版ISBN 0-13-081081-9
  • Ramachandran, U.; Solomon, M.; Vernon, M. (1987). 「プロセス間通信のためのハードウェアサポート」第14回国際コンピュータアーキテクチャシンポジウム議事録ペンシルベニア州ピッツバーグ、アメリカ合衆国. pp.  178– 188. ISBN 0-8186-0776-9{{cite book}}: CS1 メンテナンス: 場所の発行元が見つかりません (リンク)
  • Crovella, M.; Bianchini, R.; LeBlanc, T.; Markatos, E.; Wisniewski, R. (1992年12月1日~4日).並列プログラム設計と性能予測における通信・計算比率の利用. pp.  238– 245. ISBN 0-8186-3200-3
  1. ^ a b 「プロセス間通信」。Microsoft。
  2. ^ Camurati, P (1993). 「システムレベル設計のためのプロセス間通信」.ハードウェア/ソフトウェア協調設計に関する国際ワークショップ.
  3. ^オペレーティングシステム 概念。ISBN 978-0470128725
  4. ^ コンピュータの構成と設計 MIPS版:ハードウェア/ソフトウェア・インターフェース(モルガン・カウフマン著『コンピュータ・アーキテクチャと設計』)。モルガン・カウフマン。ISBN 978-0124077263
  5. ^ 並列プログラミング:ネットワークワークステーションと並列コンピュータを用いたテクニックとアプリケーション。ピアソン。ISBN 978-0131405639
  6. ^ 「Windows/WSL と AF_UNIX の相互運用性」 Microsoft、2018年2月7日。 2018年5月25日閲覧
  7. ^ 並行プログラミング - プロセス間の通信
  8. ^ "IpcMain | Electron" .
[編集]
    プロセス間ネットワーク通信を介してインターネット経由で多数のパーソナルコンピュータを接続するグリッドコンピューティングシステム

    コンピュータサイエンスにおいてプロセス間通信IPC )とは、コンピュータシステム内で実行中のプロセス間、または複数のシステム間でデータを共有することです。IPCのメカニズムは、オペレーティングシステムによって提供される場合があります。IPCを使用するアプリケーションは、多くの場合、クライアントとサーバーに分類され、クライアントがデータを要求し、サーバーがクライアントの要求に応答します。[1]多くのアプリケーションは、分散コンピューティングでよく見られるように、クライアントとサーバーの両方の機能を果たします

    IPCは、マイクロカーネルナノカーネルの設計プロセスにおいて非常に重要であり、カーネルが提供する機能の数を削減します。これらの機能は、IPCを介してサーバーと通信することで実現されるため、通常のモノリシックカーネルと比較して通信量が大幅に増加します。IPCイン​​ターフェースは、一般的に可変の解析フレームワーク構造を包含します。これらのプロセスは、IPCモデルが依存するマルチベクトルプロトコル間の互換性を確保します。[2]

    IPC メカニズムは同期型と非同期型のいずれかです。同期プリミティブは、非同期 IPC メカニズムで同期動作を実現するために使用できます。

    デメリット

    2つのプロセスからのデータをマージすると、単一のスレッドで同じデータを処理する場合と比べて、プロセス間通信や同期などのオーバーヘッドにより、2桁以上も大きなコストがかかる可能性があります。[3] [4] [5]

    アプローチ

    IPCに対するさまざまなアプローチは、パフォーマンスモジュール性、ネットワーク帯域幅遅延などのシステム状況など、さまざまなソフトウェア要件に合わせて調整されてきました[1]

    方法簡単な説明提供元(オペレーティングシステムまたはその他の環境)
    ファイルディスクに保存されたレコード、またはファイル サーバーによって要求に応じて合成されたレコードで、複数のプロセスからアクセスできます。ほとんどのオペレーティングシステム
    通信ファイル1960年代後半のIPCの独特な形式で、プラン99Pプロトコルに最も近いものダートマスタイムシェアリングシステム
    シグナル;非同期システムトラップあるプロセスから別のプロセスに送信されるシステム メッセージ。通常はデータの転送には使用されず、パートナー プロセスにリモートでコマンドを送信するために使用されます。ほとんどのオペレーティングシステム
    ソケットネットワークインターフェースを介して、同じコンピュータ上の別のプロセスまたはネットワーク上の別のコンピュータに送信されるデータ。ストリーム指向(TCP ; ソケットを介して書き込まれるデータは、メッセージ境界を維持するためのフォーマットが必要です)または、まれにメッセージ指向(UDPSCTP)です。ほとんどのオペレーティングシステム
    Unixドメインソケットインターネットソケットに似ていますが、すべての通信はカーネル内で行われます。ドメインソケットはファイルシステムをアドレス空間として使用します。プロセスはドメインソケットをinodeとして参照し、複数のプロセスが1つのソケットで通信できます。すべてのPOSIXオペレーティングシステムとWindows 10 [6]
    メッセージキューソケットに似たデータストリームですが、通常はメッセージ境界が保持されます。通常はオペレーティングシステムによって実装され、複数のプロセスが相互に直接接続することなく、メッセージキューの読み書きを可能にします。ほとんどのオペレーティングシステム
    匿名パイプ標準入出力を用いた単方向データチャネル。パイプの書き込み側に書き込まれたデータは、パイプの読み取り側から読み取られるまでオペレーティングシステムによってバッファリングされます。2つのパイプを反対方向で使用することで、プロセス間の双方向通信を実現できます。すべてのPOSIXシステム、Windows
    名前付きパイプファイルのように扱われるパイプ。匿名パイプのように標準入出力を使用する代わりに、プロセスは名前付きパイプに対して、通常のファイルのように書き込みと読み取りを行います。すべての POSIX システム、Windows、AmigaOS 2.0+
    共有メモリ複数のプロセスに同じメモリブロックへのアクセス権が付与され、プロセスが相互に通信するための共有バッファーが作成されます。すべてのPOSIXシステム、Windows
    メッセージパッシング複数のプログラムがメッセージキューやOS管理外のチャネルを使用して通信できるようにします。並行性モデルでよく使用されます。LPCRPCRMIMPIパラダイム、Java RMICORBACOMDDSMSMQMailSlotsQNXなどで使用されます。
    メモリマップファイルRAMにマッピングされたファイルは、ストリームに出力するのではなく、メモリアドレスを直接変更することで変更できます。これは、標準ファイルと同じ利点があります。すべてのPOSIXシステム、Windows

    アプリケーション

    リモートプロシージャコールインターフェース

    プラットフォーム通信スタック

    以下は、IPC メカニズムを利用しながらも、それ自体は IPC を実装していないメッセージングおよび情報システムです。

    オペレーティングシステムの通信スタック

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

    分散オブジェクトモデル

    以下は、IPC を使用するが、それ自体は IPC を実装していない、プラットフォームまたはプログラミング言語固有の API です。

    参照

    参考文献

    • リチャード・スティーブンス(1999年)『UNIXネットワークプログラミングプロセス間通信』第2巻(第2版)プレンティス・ホール出版ISBN 0-13-081081-9
    • Ramachandran, U.; Solomon, M.; Vernon, M. (1987). 「プロセス間通信のためのハードウェアサポート」. 第14回国際コンピュータアーキテクチャシンポジウム議事録. ペンシルベニア州ピッツバーグ. pp.  178– 188. ISBN 0-8186-0776-9{{cite book}}: CS1 メンテナンス: 場所の発行元が見つかりません (リンク)
    • Crovella, M.; Bianchini, R.; LeBlanc, T.; Markatos, E.; Wisniewski, R. (1992年12月1日~4日). 並列プログラム設計と性能予測における通信・計算比率の利用. pp.  238– 245. ISBN 0-8186-3200-3
    1. ^ ab 「プロセス間通信」。Microsoft。
    2. ^ Camurati, P (1993). 「システムレベル設計のためのプロセス間通信」.ハードウェア/ソフトウェア協調設計に関する国際ワークショップ.
    3. ^オペレーティングシステム 概念。ISBN 978-0470128725
    4. ^ コンピュータの構成と設計 MIPS版:ハードウェア/ソフトウェア・インターフェース(モルガン・カウフマン著『コンピュータ・アーキテクチャと設計』)。モルガン・カウフマン。ISBN 978-0124077263
    5. ^ 並列プログラミング:ネットワークワークステーションと並列コンピュータを用いたテクニックとアプリケーション。ピアソン。ISBN 978-0131405639
    6. ^ 「Windows/WSL と AF_UNIX の相互運用性」。Microsoft。2018年2月7日。 2018年5月25日閲覧
    7. ^ 「並行プログラミング - プロセス間の通信」
    8. ^ "IpcMain | Electron".
    • Linux ipc(5) マニュアルページ System V IPC について説明しています
    • ウィンドウズIPC
    • Qtを使用してIPCが利用可能
    • Unix ネットワークプログラミング(第 2 巻:プロセス間通信)W. Richard Stevens 著
    • C言語におけるプロセス間通信とパイプ
    • DIPC、分散システムV IPC
    「https://en.wikipedia.org/w/index.php?title=プロセス間通信&oldid=1326712496」より取得
    Original text
    Rate this translation
    Your feedback will be used to help improve Google Translate