メインコンテンツへ
ソフトウェアOS実践

プロセス間通信(IPC)の方式として、パイプ・共有メモリ・メッセージキューの特徴の組合せとして正しいものはどれか。

ア.パイプは双方向通信、共有メモリは低速、メッセージキューは同期が不要
イ.パイプは一方向のみ可(通常)、共有メモリは最速、メッセージキューは非同期通信
ウ.パイプは高速・大容量、共有メモリはOS管理で安全、メッセージキューは一方向のみ
エ.パイプは一方向のストリーム、共有メモリはメモリ直接共有で最速だが同期が必要、メッセージキューは構造化メッセージを非同期で送受信正解

解説

IPC手段は「社内コミュニケーション方法」みたいなもの。パイプは「一方通行の社内回覧板」(A→B方向だけ流れる)、共有メモリは「共有ホワイトボード」(速いが誰かが消して大変なことになるリスクあり→ロックが必要)、メッセージキューは「社内メール」(受信箱に溜まって、受け取った側が好きなときに読む非同期通信)!

なぜ エ が正解か

各IPC方式の特徴:①パイプ:一方向ストリーム(unidirectional)、匿名パイプは親子プロセス間。双方向には名前付きパイプ or 2本のパイプが必要②共有メモリ:仮想アドレス空間の同一物理メモリを複数プロセスが直接参照→最速のIPC。ただしアクセス競合を防ぐためセマフォ等で同期が必須③メッセージキュー:構造化されたメッセージ単位で送受信。送信側・受信側が非同期に動作でき、メッセージは受信されるまでキューに保持。

なぜ ア は間違いか

パイプは通常一方向(双方向ではない)。共有メモリは最速(低速ではない)。メッセージキューも場合によっては同期的使い方はできるが「同期が不要」という表現は誤り(同期制御が内部に組み込まれているだけ)。

なぜ イ は間違いか

「パイプは一方向」「共有メモリは最速」は正しいが、「メッセージキューは非同期」だけの説明では不十分で、エの選択肢の方が詳細かつ正確。

なぜ ウ は間違いか

パイプが「高速・大容量」という説明は誤り(共有メモリが最速、パイプはカーネルバッファを経由するため中速)。共有メモリが「OS管理で安全」も誤り(同期は開発者責任)。

出典: AI生成問題(学習用)