プロセス間通信
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/22 13:51 UTC 版)
Xサーバは、Xクライアント同士の基本的な通信方法を提供する。後にICCCMによって拡張された。このXクライアント-クライアント通信は、ウィンドウマネージャによって使われる。また、Xセッション(英語版)、ウィンドウの選択とドラッグアンドドロップ(英語版)、その他の機能を実現する。Waylandコアプロトコルは、Waylandクライアント間の通信をサポートしない。対応する機能は(もし必要であれば)(KDEやGNOMEといった)デスクトップ環境や(たとえばOSのプロセス間通信といった)サードパーティによって実現される。
※この「プロセス間通信」の解説は、「Wayland」の解説の一部です。
「プロセス間通信」を含む「Wayland」の記事については、「Wayland」の概要を参照ください。
プロセス間通信
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/31 17:32 UTC 版)
プロセス間通信 (IPC) とは、プロセス間の通信を可能にする何らかの機構であり、メッセージ送信がよく使われる。共有メモリも厳密にはプロセス間通信機構の一種だが、マイクロカーネルでIPCといえば一般にメッセージを指す。IPCにより、OSをサーバといういくつかの小さなプログラムで構築することができ、IPCを使ってサーバを他から呼び出すことができる。周辺ハードウェアのサポートもそのように実装でき、サーバにはデバイスドライバ、ネットワークのプロトコルスタック、ファイルシステム、グラフィックスなど様々なものがある。 IPCには同期式と非同期式がある。非同期IPCはネットワーク通信に似ている。送信側はメッセージを発行して処理を継続する。受信側はメッセージの到着を定期的にチェックするか、何らかの検出機構で通知される。非同期IPCではカーネルがメッセージ用のバッファとキューを管理しており、バッファオーバーフローもカーネルが扱う。また、メッセージは2回コピーされる(送信側からカーネル、およびカーネルから受信側)。同期IPCでは、送信側か受信側はもう一方がIPC可能となるまでブロックされる。バッファリングも複数回のコピーも不要だが、明示的に両者が待ち合わせる必要があるため、プログラミングに巧妙さを必要とする。多くのプログラマは非同期送信と同期受信を好む。 第一世代のマイクロカーネルは一般に同期IPCも非同期IPCもサポートしていたが、その性能は悪かった。ヨッヘン・リートケ はその原因がIPC機構の設計と実装にあることを示した。彼はL4マイクロカーネルでIPCコストを10分の1以下にした。IPCは送信も受信もシステムコールでサポートされ、同期式のみであり、レジスタでなるべく多くのデータを渡すようにしている。さらにリートケは direct process switch という概念を導入し、IPCの際に送信側から受信側へ直接(不完全な)コンテキストスイッチを行うようにした。そのためL4では、メッセージの一部または全部をレジスタ群で渡す場合、レジスタ内のメッセージは全くコピーせずに転送することができる。さらにスケジューラを呼び出すオーバーヘッドを排除している。これは特に遠隔手続き呼出し (RPC) 的にサーバを呼び出す際のIPCに適している。もう1つの最適化として lazy scheduling と呼ばれるものがあり、IPC中にスケジューリングキューを走査せずに済むようするため、IPC中はスレッドをレディキューでブロックしたままにする。スケジューラが呼び出されると、そのようなスレッドを適当な待ちキューに移す。 クライアント・サーバ型システムでは多くの通信が基本的に同期式であり、非同期なプリミティブを使っていたとしても、通常はクライアントがサーバを呼び出し、応答を待つことになる。その方が実装も効率的になるため、L4以降のマイクロカーネルでは同期IPCプリミティブのみを提供するようになった。非同期IPCは補助スレッドを使って同期IPCプリミティブ上で実装できる。しかし、L4を採用した商用製品では非同期通信サポートのために非同期通知機構が必要であることが判明し、それを追加している。このシグナルのような機構はデータを転送するものではなく、カーネルによるバッファリングが不要である。 同期IPCでは通信の一方が応答可能になるまでもう一方がブロックされる。したがって無制限にIPCを使用すると容易にデッドロック状態が発生する。また、クライアントが要求を送って応答を待ち合わせないようにすると、容易にDoS攻撃のような状態になる。したがって同期IPCでは長期に渡るブロックを防ぐ手段を提供しなければならない。多くのマイクロカーネルはIPC呼び出しにタイムアウトを提供しており、ブロック時間を制限している。実際にはタイムアウト時間の設定は難しく、結果としてクライアントのタイムアウトは無制限、サーバのタイムアウトはゼロとすることが多い。結果としてタイムアウト時間を任意に設定できるようにせず、相手が応答可能でない場合にIPCを即座に失敗させるかどうかを示すフラグだけを用意する傾向になってきた。それによってタイムアウト時間としてゼロか無制限かを選択することになる。L4やMINIXの最近のバージョンもそのようになっている(QNXや以前のL4ではタイムアウト時間を任意に設定できる)。
※この「プロセス間通信」の解説は、「マイクロカーネル」の解説の一部です。
「プロセス間通信」を含む「マイクロカーネル」の記事については、「マイクロカーネル」の概要を参照ください。
プロセス間通信
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/22 09:52 UTC 版)
詳細は「プロセス間通信」を参照 プロセスが互いに通信することを「プロセス間通信」(IPC) と呼ぶ。プロセスはかなり頻繁に通信を必要とする。例えばシェルのパイプラインでは、第1のプロセスの出力を第2のプロセスに渡す必要があり、その後も同様に出力と入力が連鎖する必要がある。その際、割り込みなどを使わずに構造化された方法を使うことが望ましい。 通信するプロセス群は異なるマシン上で動作していてもよい。その場合、それぞれのマシンのOSは異なるかも知れないので、何らかの調停機能(通信プロトコル)が必要となる。
※この「プロセス間通信」の解説は、「プロセス」の解説の一部です。
「プロセス間通信」を含む「プロセス」の記事については、「プロセス」の概要を参照ください。
Weblioに収録されているすべての辞書からプロセス間通信を検索する場合は、下記のリンクをクリックしてください。

- プロセス間通信のページへのリンク