IPC(プロセス間通信)とは?別々のプロセスがデータをやり取りするしくみの総称

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

IPC(プロセス間通信)とは(全体像)

IPCは、別々に動いているプロセス同士が、データを受け渡しするためのしくみのこと。プロセスはお互いのメモリを直接さわれない(分離されている)ので、通信の方法が用意されている。

身近にたとえると、別々の部屋に住む人どうしの連絡方法だ。ドアの隙間にメモを差し込む(パイプ)、共用テーブルに直接書く(共有メモリ)、ポストに投函する(メッセージキュー)、大声で叫ぶ(シグナル)、電話で離れた家とつなぐ(ソケット)——状況によって使い分ける。

押さえるのは、IPCには複数の方法があり、向き・不向き(速さなど)が違うということ。


詳しく:種類とパイプ・共有メモリの特徴だけ覚えれば戦える

ここが記事の心臓部。まず代表的なIPCを見ましょう。

主要なIPC

種類特徴たとえ
パイプ親子プロセス間・単方向(シェルの「|」)ドアの隙間にメモを差す
共有メモリメモリ領域を共有・最速共用テーブルに直接書く
メッセージキューキューに溜める・非同期ポストに投函する
シグナル緊急の通知(SIGKILLなど)大声で叫ぶ
ソケット離れた相手とも通信できる電話でつなぐ

パイプは、シェルの「ls | grep」のように、あるプロセスの出力を別のプロセスの入力につなぐしくみです。ここで一番のひっかけが「パイプは双方向」という誤解。パイプは単方向で、行き帰りの両方向にしたいときは2本のパイプを使います。

共有メモリは、複数のプロセスが同じメモリ領域を共有する方法で、データをコピーしないので最速です。ただし、同時に書き込むと壊れるので、別途同期(セマフォなど)が必要になります。

ここで2つめのひっかけが「どのIPCも同じ速さ」という誤解。共有メモリが最速で、ネットワーク越しに関数を呼ぶRPCは遅いなど、方法によって速さは大きく違います。

速さのイメージ

速さIPC
速い共有メモリ(同じメモリを共有)
ふつうパイプ・メッセージキュー
遅いソケット・RPC(ネットワーク越し)

わかりやすく言い換えると

要するに、部屋の住人の連絡で覚えるとラクです。

IPCの種類 … パイプ(メモを差す)、共有メモリ(共用テーブル)、シグナル(叫ぶ)、ソケット(電話)

パイプは単方向 … メモは一方通行(行き帰りなら2本必要)

速さの違い … 共有メモリが最速、RPCはネットワーク越しで遅い

つまり、「パイプは単方向」「共有メモリが最速」、この2点が試験の急所です。


試験のツボ

🔴 一番出る:IPCの種類

①パイプ(単方向)・共有メモリ(最速)・メッセージキュー(非同期)

②シグナル(緊急の通知)・ソケット(離れた相手とも通信)

🔴 次に出る:パイプは単方向

①パイプはシェルの「|」で、出力を入力につなぐ単方向のしくみ

②行き帰りの両方向にしたいときは2本のパイプを使う

🟡 押さえると安定:速さの違い

①共有メモリが最速(メモリを共有しコピーしない・要同期)

②ソケットやRPCはネットワーク越しで遅い


よくある間違い

「パイプは双方向に通信できる」→ ✗  パイプは単方向。行き帰りの両方向にしたいときは2本のパイプを使う。

「どのIPCも同じ速さである」→ ✗  共有メモリが最速、ネットワーク越しのRPCは遅いなど、方法によって速さは大きく違う。

「共有メモリは同期がいらず、そのまま同時に書き込んでよい」→ ✗  共有メモリは同時に書き込むと壊れるので、セマフォなどの同期が必要。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(IPCの種類)

📝 オリジナル問題 1 IPCの種類

IPC(プロセス間通信)に関する次の記述のうち、正しいものはどれか。

  1. IPCは別々のプロセスがデータをやり取りするしくみで、パイプや共有メモリなど複数ある
  2. IPCは同じプロセスの中だけで使うしくみで、別プロセスとは通信できないものとされている
  3. IPCは紙に印刷する装置のことで、プロセスの通信とは無関係なものだとされているものだ
  4. IPCはプロセスを必ず1つに減らす機能で、データのやり取りはできないものだとされている
テクマスター
テクマスター 解答・解説

解答は 1 ですよ。

IPCは別々のプロセスがデータをやり取りするしくみで、パイプや共有メモリなどがありますね。部屋の住人どうしの連絡方法のようなものです。

選択肢2の「同じプロセスの中だけ」、選択肢3の「印刷する装置」、選択肢4の「1つに減らす機能」はどれも誤りですよ。

選択肢判定理由
1別プロセス間のデータのやり取り
2別プロセスと通信するためのしくみ
3印刷する装置ではない
4プロセスを減らす機能ではない

オリジナル問題2(パイプの単方向)

📝 オリジナル問題 2 パイプの単方向性

パイプに関する次の記述のうち、正しいものはどれか。

  1. パイプは1本で双方向に通信でき、行き帰りに2本を使う必要はないものだとされている
  2. パイプは単方向の通信で、行き帰りの両方向にしたいときは2本のパイプを使うしくみだ
  3. パイプは紙に印刷する手順のことで、プロセスの通信とは無関係なものだとされているのだ
  4. パイプはネットワーク越しの通信専用で、同じパソコンの中では使えないものだとされている
テクマスター
テクマスター 解答・解説

解答は 2 ですよ。

パイプは単方向の通信で、行き帰りの両方向にしたいときは2本のパイプを使いますね。シェルの「|」がその例です。

選択肢1の「1本で双方向」、選択肢3の「印刷する手順」、選択肢4の「ネットワーク専用」はどれも誤りですよ。

選択肢判定理由
1パイプは単方向
2単方向・両方向なら2本
3印刷する手順ではない
4同じパソコンの中でも使う

オリジナル問題3(速さの違い)

📝 オリジナル問題 3 IPCの速さの違い

IPCの速さに関する次の記述のうち、正しいものはどれか。

  1. どのIPCもまったく同じ速さで、共有メモリやRPCに性能の違いはないものだとされている
  2. RPCはネットワークを使わない最速の方式で、共有メモリよりも必ず速いものだとされている
  3. 共有メモリはメモリを共有して最速で、ネットワーク越しのRPCは遅いといった性能差がある
  4. IPCの速さは紙に印刷する速度で決まり、通信のしくみとは無関係なものだとされているのだ
テクマスター
テクマスター 解答・解説

解答は 3 ですよ。

共有メモリはメモリを共有して最速、ネットワーク越しのRPCは遅いという性能差がありますね。方法によって速さが違います。

選択肢1の「同じ速さ」、選択肢2の「RPCが最速」、選択肢4の「印刷する速度」はどれも誤りですよ。

選択肢判定理由
1方法で速さが違う
2RPCはネットワーク越しで遅い
3共有メモリ最速・RPCは遅い
4印刷の速度では決まらない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る