D-Bus – ウィキペディア

before-content-x4

d-bus (から 英語 デスクトップバス )は、通信中間通信のための無料のプログラムライブラリです。特にデスクトップ環境のニーズに基づいています。

after-content-x4

Freedesktop.orgプロジェクトの一部であり、ほぼすべての最新のLinux分布で使用されています。全体として、すべてのコンポーネントを使用したD-Busは一般に、軽量のミドルウェア(インタープリンの通信をサポートするデーモン)、特にオブジェクトリクエストブローカー(ORB;オブジェクト用の通信ブローカーの一種)を表します。

単純化された通信スキーム:ファイルブラウザは、新しいハードウェアが接続されているメッセージプログラムを受信します

プログラムは、D-Busを介して相互に通信できます。右に示されている例では、ファイルマネージャーがコンピューターに接続されたハードウェアについて通知されるシステム全体のプログラムについてレポートします(この例では、要するに、ハードウェア抽象化レイヤーデモン 案件 -悪魔)。 案件 -Dasemonは、ハードウェアに変更された場合にファイルマネージャーに通知し、このzを通知します。 B. USBスティックが接続されているときに自動的にハングアップし、コンテンツを表示できます。

個々のプログラムは、プログラムライブラリを通過します libdbus ペアで互いに連絡し、メッセージを交換する可能性。いずれの場合も、ファイルシステムパスの命名が連想しているオブジェクトに対処します。たとえば /org/kde/kspread/sheets/3/cels/4/5 。さまざまなプログラムを引き離すことができるようにするために、D-Busオブジェクトは名前ルームにまとめられています。これらの命名スペースには通常、開発者のドメインが含まれています(たとえば /org/where のプログラムのために kde.org )。

さらに、実行可能なニュースBusdaemonがあります dbus いくつかのアプリケーションが接続できます。デーモンは、1つのアプリケーションから1つ以上のアプリケーションからメッセージを転送できます。

D-BUSは、同じセッションのデスクトップアプリケーション間の通信を目的としています(いわゆる セッション -bus)そして一方、デスクトップセッションとカーネル、さまざまなシステムデモネ、システムプロセスなどのオペレーティングシステムの一部との間の通信( システム -バス)。

freedesktop.orgによるデスクトップアプリケーション用の標準化されたニュースシステムを導入する前に、2つの最も人気のあるデスクトップ環境KDEとGNOMEは、同じ概念の異なる互換性のない実装、つまりDCOP( デスクトップ通信プロトコル )KDEとCorbaのような建築( 一般的なオブジェクト要求ブローカーアーキテクチャ )gnome用。

after-content-x4

D-Busにはより多くの機能があり、標準化と標準に有利な独自のシステムの実装が削除された後、デスクトップ環境プロジェクトに迅速に受け入れられました。したがって、ユーザーインターフェイス間の矛盾がますます低下しているため、標準プロトコルはLinuxデスクトップの重要な要因になりました。

D-Bus仕様は3つの部分で構成されており、D-Bus-Daemon、D-Busライブラリを詳細に libdbus 実際のDバスプロトコルと同様に。

d-bus-daemon [ 編集 | ソーステキストを編集します ]

d-bus-daemonは、いわゆるニュースバスを実装しています( メッセージバス )、その機能では、オブジェクト要求ブローカーと同等です。任意の数のクライアントがに接続します デーモン 、Dバスプロトコルに基づいており、通常は libdbus 。個々の(l)RPC呼び出しはfromです デーモン 責任あるクライアントに受け入れられ、伝えられます デーモン ブローカーもそうです。 (l)RPC呼び出しは抽象オブジェクトに基づいて行動するため、OOPオブジェクトモデルに基づいたメソッド呼び出しを表します。さらに、デーモンは依然としてサービスを提供します。 活性化 で。最後に、デーモンは、もちろん、個々の接続に基づいて、同時に1対かかる通信(放送)を提供します。

d-busライブラリ(libdbus) [ 編集 | ソーステキストを編集します ]

D-BUSライブラリは、DバスプロトコルまたはD-BUS仕様全体の参照実装を表します。これは、プログラミング言語CのAPIを提供します。これを使用して、LRPC/RPCを介した通信に2つのプロセスを使用できます。それは引き続き必要なマーシャリングを提供し続けます。つまり、輸送用のバイトを調整して正しく配置します。最終的に、APIは、単純に抽象化されたポイントツーポイント(プロセス間)インタープロセス通信のためのすべてのサービスを提供します。

に基づく libdbus 後者、特にQTとGlib(GTK+)の実装で、すべての広範なプログラミング言語とフレームワークの実装を開発しました。したがって、GNOMEはGDBUSとKDE4 QTDBUSを使用します。

d-bus-protocol [ 編集 | ソーステキストを編集します ]

DバスプロトコルはバイナリIPCプロトコルです。プリミティブタイプと許容メッセージタイプの両方、およびトランスポートのコーディングが指定されています。基本的に、プロトコルはニュース交換の原則に基づいており、それに基づいた遠いビュー(LRPCS/RPCS)を指定します。

DBUSは機能的に制限されており、Prilegrunicungへの代替アプローチよりも遅いため、たとえば、独自のシステムでDBUの代わりにAndroid バインダー プット。
これを改善するために、Greg Kroah-HartmanとKDBUSを使用した他のLinux開発者( カーネルd-bus )LinuxカーネルのDバスの実装。 KDBUSは、以前のユーザースペースソリューションよりもはるかに高速です。さらに、さらに効率的なアーキテクチャ(10コピーではなく2以下)では、プロセス間で大量のデータを交換できます。 [2] [3] [4] ただし、KDBUSは技術的な理由で失敗し、Linuxカーネルには含まれていませんでした。 Bus1は、2016年8月に新しい代替品として提案されました。 [5] 2017年8月、DBUS-Brokerを持つ同じ開発者は、DBUSの問題を解決するための3番目のアプローチを提案しました。これは、DBUS仕様と互換性があると言われています。 [6]

  1. DBUS 1.14.6の発表(メンテナンスの更新)
  2. Thorsten Leemhuis: KDBUS:Linuxカーネルの新しいプロセス間通信。 ハイズ 、2014年1月20日、 2015年5月26日に取得
  3. KDBUSの講義映画の解剖学 (英語; PDF; 250 KB) – Lennart Poettering、2014年2月
  4. Tizen 3.0の講義映画Kdbus (英語; pdf; 2.1 mb) – の比較を参照してください d-bus vs kdbus 7ページ。 2014年
  5. BUS1:Linux用に提示される新しいインタープロセスコミュニケーションシステム 。の: Pro-linux 。 18. 2016年8月( pro-linux.de )。
  6. DBUSブローカーはDBUを再発明しました 。の: Pro-linux 。 24. 2017年8月( pro-linux.de )。

after-content-x4