🗂

Interprocess Communication

2021/05/27に公開

こんにちは

今日は、「Interprocess Communication」についてです。早速、まとめに入りましょう。

4、Interprocess Communication

OSで同時に実行しているプロセスは、独立しているプロセスまたは協力し合ってるものもあります。実行しているプロセスとデータを共有していなければ、そのプロセスは独立しているといえます。逆に、他のプロセスから影響を与えているもしくは与えられている場合は、協力しているといえます。

プロセスの協力を許可している環境を提供しているのは、いくつかの理由があります。

  • Information Sharing
    いくつかのアプリケーションは、同じ情報(コピー、ペースト)に興味があるので、同時にアクセスできる環境を提供してあげなくてはいけません。

  • Computation speedup
    ある特定のタスクを早く動かしたい場合

  • Modularity
    モジュールの形でシステムを組み立てたい場合

Interprocess communication(IPC)
協力関係にあるプロセスで、Interprocess Communicationというものが必要になってきます。このメカニズムは、データ交換を許可したりしています。2つの基本的なモデルがあります。

Shared memory
ある範囲のメモリが作られ、プロセスはデータの読み書きによって情報を交換することができます。

Message passing
名前にもあるように、メッセージという手法を使って、コミュニケーションをはかっています。

それぞれのモデルをもう少し詳しく見てみましょう!

5、IPC in Shared-Memory Systems(共有メモリシステム)

共有メモリの範囲は、共有メモリを作成しているプロセスのアドレススペースに属しています。共有メモリを使って、コミュニケーションを取ろうとしている他のプロセスは、そのアドレススペースに所属させなければなりません。ロケーションやデータの形は、OSによって管理されているのではなく、それらのプロセスによって見分けられています。

Unbounded buffer(無限のバッファ)
バッファの現実的な制限がありません。消費者は、新しいアイテムを待たなければなりませんが、生産者は新しいアイテムを作ることができます。

Bounded buffer(制限のあるバッファ)
固定されたバッファ。この場合は、消費者はバッファが空の時、待たなければなりません。そして、生産者も、バッファが満杯の時は待たなければなりません。

6、IPC in Message-Passing Systems

メッセージパッシングは、同じアドレススペースなしで、コミュニケーションと活動を同期することを許可しています。プロセスによって送られるメッセージは、サイズが固定のもあれば、そうではないものもあります。

1) Naming

コミュニケーションしたいプロセスは、お互いに参照する道を持つ必要があります。直接的なコミュニケーション下では、それぞれのコミュニケーションをはかりたいプロセスが、受信者と送信者を名付ける必要があります。

2) Synchronization

プロセス間のコミュニケーションは、send()とreceive()をコールすることを通して、行われます。

3) Buffering

コミュニケーションが直接的またはそうではないか、コミュニケーションするプロセスによって交換されたメッセージは、一時的なキューに存在しています。

ありがとうございました。明日は、IPCシステムの例に入っていきたいと思います。

Discussion