プロセス間通信(IPC)とは?ぷろせすかんつうしん
プロセス間通信(IPC)とは、独立した実行単位どうしがデータを受け渡す仕組みの総称。共有メモリ、メッセージキュー(データキュー・メールボックス)、パイプ、ソケット、シグナルやイベントフラグなどがあり、コピーの有無・同期の有無・同一ホストに閉じるかで使い分ける。組込みでは、割込みハンドラから呼べるかどうかも選択の条件に入る。
最終更新:2026-10-06
この語が出る過去問を解く →背景
保護のためにメモリ空間を分ければ、当然そのままではデータを渡せない。分離の利点(暴走の閉じ込め、責任の切り分け)を保ったまま必要な情報だけを通す穴を、OSが管理された形で用意したのがIPCである。組込みでは、この穴の設計がそのまま応答時間の最悪値と優先度逆転の起きやすさを決めるため、機能ではなくリアルタイム性の観点で選ぶ。
具体例
TOPPERS/ASPやμITRON系では、周期タスクが取り込んだセンサ値を制御タスクへ渡すのにデータキューを使い、事象の通知だけならイベントフラグを使う。大きな画像バッファは共有メモリに置き、所有権の受け渡しだけをキューで送ってコピーを避ける、という併用がよく取られる。
試験での引っ掛け
共有メモリは速いが同期は含まれない。セマフォやミューテックスと組み合わせなければ書きかけのデータを読む。逆にキューはコピーと待ち行列の管理コストを払う代わりに順序と排他を保証する。ミューテックスを使う場合は優先度継承の有無まで確かめないと、優先度逆転で期限を落とす。
関連用語
出た過去問
出典:平成30年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7(IPA)解説で登場
スレッドとプロセスに関する記述のうち、適切なものはどれか。
正解:同一アドレス空間に含まれているスレッド間の通信は、プロセス間の通信と比較して効率的に行われる。
要点:スレッドは空間共有ゆえプロセス間より通信が効率的
スレッドは1つのプロセス内に複数存在し、コード領域やデータ領域などのアドレス空間を共有する(スタックとコンテキストはスレッドごとに別々にもつ)。アドレス空間が共通なので、スレッド間ではメモリ上の変数を直接読み書きしてデータをやり取りでき、カーネルを介するプロセス間通信より効率がよい。切替え時に退避する情報も少なく、コンテキストスイッチも軽い。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。