LoginSignup
3
0

More than 3 years have passed since last update.

プロセス間通信を勉強した

Posted at

お勉強メモです。。。

プロセス間通信とは

  • 複数プロセス間でのデータ交換、通信のこと。
  • 複数のプロセスの間で、情報の共有やメッセージの交換などを行なう機能を提供するための仕組みを指す。
  • プロセスごとに専用のメモリがカーネルによって割り当てられるため、プロセスから他のプロセスのメモリにはアクセスすることはできない

プロセス間通信の実現方法

共有メモリ
キャプチャ.PNG

特徴:
・メモリ上にプロセス間で共有するメモリ領域を確保する
・プロセス間で通信を行うわけではなく、メモリを参照するだけ
・共有メモリのデータは削除しない限り残ってしまう
・ソケットやパイプを作成しなくて良いので(システムコール不要)、その分高速
・複数プロセスからwriteされると整合性が保てなくなってしまうので、何らかの対策が必要

ソケット
キャプチャ.PNG
特徴:
・ソケットを介してプロセス間で通信を行う
・他のマシンのプロセスとも通信が可能
・通信の際に使用できるプロトコルはTCP/IP,UDP/IP
・双方向の通信が可能
・受信したデータはバッファに一度格納され、ソケットが読み出しを行う際にバッファからデータが取り出される

パイプ
$ ps -ef | grep -e "sample" ./とかでよくお世話になる棒。
キャプチャ.PNG
特徴:
・ソケットと同じようにディスクリプタで接続を管理し、データの送受信を行う
・1つのディスクリプタでは単方向の通信しか行えないため、双方向通信を行うにはディスクリプタを2つ用意する必要がある
・ソケット同様バッファがある

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0