プロセス間通信(IPC)

独立したプロセス間でデータをやり取り・同期するための機構の総称。共有資源を扱う並列処理(parallel-computing)と密接に関わる。

主な手段

  • ファイル: 最も素朴な共有。
  • シグナル(linux signal): 非同期通知。
  • メッセージキュー: OSごとに実装が異なる。
  • ソケット: ネットワーク経由を含む。WebSocket もこの系列。
  • unix pipe: シェルの ls | grep のようなパイプライン。伝統的にコピーが発生し遅いが、Linux の splice システムコールと hugepage を併用するとコピーなしで転送でき高速化できる。
  • セマフォ: 共有資源へのアクセスを制御する同期プリミティブ(デザインパターン的に使う)。
  • 共有メモリ / メモリマップドファイル: mmap でメモリ上にファイルとして共有。
  • メッセージパッシング: MPI などのインターフェース。通信方法は規定せず(デフォルトはソケット)。

メッセージング指向のモデル

  • MPSC (Multi-producer, single consumer): チャネルベースのメッセージングモデル。rust-lang では std::sync::mpsctokiompsc で利用する。送信機(tx)/受信機(rx)でデータを受け渡す。
  • 上位の RPC として gRPC があり、k8s と組み合わせた分散処理でも使われる。

関連トピック

関連: _moc-systems / parallel-computing