OSのプロセス間通信(IPC)
プロセス間通信とは
プロセス間通信 (IPC) XNUMX つ以上のプロセスまたはプログラム内の複数のスレッド間でデータを交換するために使用されます。 プロセスは、ネットワークで接続された単一または複数のコンピュータ上で実行される場合があります。 IPC の完全な形式はプロセス間通信です。
これは、プログラマーがオペレーティング システムで同時に実行できるさまざまなプログラム プロセス間のアクティビティを調整できるようにするプログラミング インターフェイスのセットです。これにより、特定のプログラムが同時に多数のユーザー要求を処理できるようになります。
単一のユーザー リクエストによってオペレーティング システムで複数のプロセスが実行される可能性があるため、プロセス間で通信が必要になる場合があります。各 IPC プロトコル アプローチにはそれぞれ利点と制限があるため、単一のプログラムですべての IPC メソッドを使用することは珍しくありません。
プロセス間通信のアプローチ
ここでは、プロセス間通信のための重要な方法をいくつか紹介します。
パイプ
パイプは、関連する 2 つのプロセス間の通信に広く使用されています。これは半二重方式であるため、最初のプロセスは 2 番目のプロセスと通信します。ただし、全二重を実現するには、別のパイプが必要です。
メッセージパッシング
これは、プロセスが通信および同期するためのメカニズムです。メッセージ パッシングを使用すると、プロセスは共有変数に頼ることなく相互に通信します。
IPC メカニズムは 2 つの操作を提供します。
- 送信 (メッセージ) - メッセージ サイズは固定または可変
- 受信(メッセージ)
メッセージキュー
メッセージ キューは、メッセージ キュー内に保存されているメッセージのリンクされたリストです。 kernelメッセージ キュー識別子によって識別されます。この方法では、全二重機能を持つ単一または複数のプロセス間の通信が提供されます。
直接対話
このタイプのプロセス間通信プロセスでは、相互に明示的に名前を付ける必要があります。 この方法では、XNUMX 組の通信プロセス間にリンクが確立され、各ペア間には XNUMX つのリンクのみが存在します。
間接的なコミュニケーション
間接的な通信は、プロセスが共通のメールボックスを共有する場合にのみ確立され、各プロセス ペアは複数の通信リンクを共有します。リンクは、多数のプロセスと通信できます。リンクは双方向または単方向です。
共有メモリ
共有メモリは、すべてのプロセス間で共有メモリを使用して確立される、2 つ以上のプロセス間で共有されるメモリです。このタイプのメモリは、すべてのプロセス間でアクセスを同期することによって相互に保護する必要があります。
FIFO
無関係な 2 つのプロセス間の通信。これは全二重方式であり、最初のプロセスが 2 番目のプロセスと通信でき、その逆も可能です。
なぜIPCなのか?
情報共有にプロセス間通信プロトコルを使用する理由は次のとおりです。
- モジュール化の高速化に役立ちます
- 計算の
- 特権の分離
- 利便性
- オペレーティング システムが相互に通信し、動作を同期するのに役立ちます。
IPC で使用される用語
IPC で使用される重要な用語をいくつか次に示します。
Semaphores: セマフォは信号伝達メカニズムの技術です。 この OS メソッドは、リソースへのアクセスを許可または禁止します。これは、リソースの設定方法に応じて異なります。
Signals: シグナリングを介して複数のプロセス間で通信する方法です。 ソースプロセスは番号によって認識されるシグナルを送信し、宛先プロセスはそれを処理します。
読書の提案:- 何ですか Semaphore? バイナリ、カウント型と例
FIFOS と似ているもの、FIFOS とは異なるもの
FIFOのような | FIFOとは異なります |
---|---|
FIFO方式に従います | 特定の緊急メッセージが前面に届く前にプルする方法 |
FIFO は、送信プロセスと受信プロセスの両方から独立して存在します。 | いつでも準備ができているので、開けたり閉めたりする必要はありません。 |
無関係なプロセス間でのデータ転送を可能にします。 | オープンとクローズの間に同期の問題はありません。 |
まとめ
- 定義: プロセス間通信は、XNUMX つ以上のプロセスまたはプログラム内の複数のスレッド間でデータを交換するために使用されます。
- パイプは、XNUMX つの関連するプロセス間の通信に広く使用されています。
- メッセージ パッシングは、プロセスが通信して同期するためのメカニズムです。
- メッセージ キューは、カーネル内に保存されるメッセージのリンクされたリストです。
- 直接プロセスはプロセス間通信プロセスの一種であり、相互に明示的に名前を付ける必要があります。
- 間接通信は、プロセスが共通のメールボックスを共有する場合にのみ確立され、各プロセス ペアは複数の通信リンクを共有します。
- 共有メモリは、すべてのプロセス間の共有メモリを使用して確立される、XNUMX つ以上のプロセス間で共有されるメモリです。
- プロセス間通信方式はモジュール性の高速化に役立ちます。
- セマフォは信号伝達メカニズムの技術です。
- Signaling は、シグナリングによって複数のプロセス間で通信する方法です。
- FIFO と同様に FIFO 方式に従いますが、FIFO とは異なり、特定の緊急メッセージが先頭に到達する前に取得する方式を使用します。