プロセス間通信(プロセスかんつうしん、IPC、: interprocess communication)はコンピュータの動作において、複数プロセス(の複数スレッド)間でデータをやりとりする仕組み。通信プロセスは、同一コンピュータ内で帰結するローカル、ネットワーク接続された別のコンピュータと相互にリモート、などのほかに多様な観点で分類され、スレッド間の通信帯域幅とレイテンシや扱うデータの種類も多種多様である。メッセージパッシング同期共有メモリRPCなどのメカニズムやプリミティブがある。

プロセス間通信の目的と理由は

であり、「スレッド間通信」や「アプリケーション間通信」と呼ぶこともある。

IPCとアドレス空間のコンセプトの組合せは、アドレス空間分離の基盤である[1]

主なIPC技法

編集
技法 提供しているオペレーティングシステムや環境
ファイル 多くのOS
シグナル 多くのOS。WindowsではCランタイムライブラリでのみ実装しており、IPCとしての利用は推奨していない[要出典]
メッセージキュー 多くのOS
ソケット 多くのOS
UNIXドメインソケット POSIX準拠システム
パイプ POSIX準拠システム、Windows
名前付きパイプ POSIX準拠システム、Windows
セマフォ POSIX準拠システム、Windows
共有メモリ POSIX準拠システム、Windows
メモリマップトファイル POSIX準拠システム、Windows
メッセージパッシング
(shared nothing)
MPI パラダイム、Java RMICORBAMSMQ英語版, MailSlot英語版QNX、その他
Binder Android

実装例

編集

IPCとして使われているAPIはいくつかある。プラットフォームに依存しない主なAPIの例を挙げる。

  • 無名パイプ英語版名前付きパイプ
  • Common Object Request Broker Architecture (CORBA)
  • Freedesktop.orgD-Bus
  • Distributed Computing Environment (DCE)
  • メッセージバス (Mbus) - RFC 3259 にて規定
  • MCAPI (Multicore Communications API)
  • Lightweight Communications and Marshalling (LCM)
  • ONC RPC
  • UNIXドメインソケット
  • XML: XML-RPCSOAP
  • JSON: JSON-RPC
  • Thrift
  • TIPC (TIPC
  • ZeroCInternet Communications Engine (ICE)

以下は、プラットフォーム固有またはプログラミング言語固有のAPIの例である。

脚注

編集
  1. ^ Jochen Liedtke. On µ-Kernel Construction, Proc. 15th ACM Symposium on Operating System Principles (SOSP), December 1995
  2. ^ Inter Process Communication (IPC)”. CMU. 2012年10月4日閲覧。
  3. ^ IPC Shared Memory Messaging

参考文献

編集

関連項目

編集

外部リンク

編集


📚 Artikel Terkait di Wikipedia

ランダムフォレスト

fast implementation of for high dimensional data. (C++, parallel computing, sparse memory, Linux+Windows) TMVA Toolkit for Multivariate Data Analysis implements

Raspberry Pi

Pi Picoを稲沢テックで製造中。 Model A、Model Bはクレジットカードと同程度(Model A は長辺方向がクレジットカードの5分の4程度)の大きさ。Model Aの方が価格が安い。Model A、Model BにはUSBをはじめとして、様々な端子が取り付けられている。

System/360

GA26-1689-4  ^ The IBM 2321 Data Cell Drive, Columbia University Computing History ^ IBM System/360 Model 44 Functional Characteristics ^ [2] ^ IBM 360 display and

OpenCL

(relaxed-consistency shared memory model) 同期ポイントおよびOpenCLアトミック操作でのホスト・デバイス間のメモリ一貫性を保証する共有仮想メモリ (shared virtual memory: SVM, OpenCL 2.0) IEEE

コンピュータ略語一覧

ACK Acknowledge ACL アクセス制御リスト (Access Control List) ACM Association for Computing Machinery ACPI Advanced Configuration and Power Interface ADSL 非対称デジタル加入者線

仮想記憶

仮想記憶(かそうきおく、英語: virtual memory、バーチャルメモリ)とは、コンピュータ分野におけるメモリ管理の仮想化技法の一種であり、オペレーティングシステム (OS) などが物理的なメモリを、アプリケーション・ソフトウェア(プロセスなど)に対して、専用の連続した主記憶装置に見えるように提供する。

USBフラッシュドライブ

浮遊ゲート半導体メモリの一種である、フラッシュメモリについての基本は1980年代初期に舛岡富士雄によって発明された。フラッシュメモリは記憶素子(英語: Memory cell (computing))として浮遊ゲートMOSFETを使う。 複数の個人らがUSBフラッシュドライブの発明者となる権利を主張した。1999年4月5日に、イスラエルの会社エム・システムズ

ピーター・J・デニング

(1968) "The Working Set Model for Program Behavior". ACM Communications (May). (1970) "Virtual memory." ACM Computing Surveys (September). (1973)