お勉強メモです。。。
プロセス間通信とは
- 複数プロセス間でのデータ交換、通信のこと。
- 複数のプロセスの間で、情報の共有やメッセージの交換などを行なう機能を提供するための仕組みを指す。
- プロセスごとに専用のメモリがカーネルによって割り当てられるため、プロセスから他のプロセスのメモリにはアクセスすることはできない
プロセス間通信の実現方法
特徴:
・メモリ上にプロセス間で共有するメモリ領域を確保する
・プロセス間で通信を行うわけではなく、メモリを参照するだけ
・共有メモリのデータは削除しない限り残ってしまう
・ソケットやパイプを作成しなくて良いので(システムコール不要)、その分高速
・複数プロセスからwriteされると整合性が保てなくなってしまうので、何らかの対策が必要
ソケット
特徴:
・ソケットを介してプロセス間で通信を行う
・他のマシンのプロセスとも通信が可能
・通信の際に使用できるプロトコルはTCP/IP,UDP/IP
・双方向の通信が可能
・受信したデータはバッファに一度格納され、ソケットが読み出しを行う際にバッファからデータが取り出される
パイプ
$ ps -ef | grep -e "sample" ./
とかでよくお世話になる棒。
特徴:
・ソケットと同じようにディスクリプタで接続を管理し、データの送受信を行う
・1つのディスクリプタでは単方向の通信しか行えないため、双方向通信を行うにはディスクリプタを2つ用意する必要がある
・ソケット同様バッファがある