<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=D-Bus</id>
	<title>D-Bus - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=D-Bus"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=D-Bus&amp;action=history"/>
	<updated>2026-05-28T04:16:29Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=D-Bus&amp;diff=503747&amp;oldid=prev</id>
		<title>~2025-36945-24: Link zu Greg Kroah-Hartman eingefügt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=D-Bus&amp;diff=503747&amp;oldid=prev"/>
		<updated>2025-11-27T21:47:22Z</updated>

		<summary type="html">&lt;p&gt;Link zu Greg Kroah-Hartman eingefügt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
| Screenshot           = &lt;br /&gt;
| Beschreibung         = IPC-[[Daemon]]&lt;br /&gt;
| Hersteller           = D-Bus-Team&lt;br /&gt;
| AktuelleVersion      = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
| AktuelleVersionFreigabeDatum = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
| AktuelleVorabVersion = &lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
| Betriebssystem       = [[Unix]], [[Linux]], [[Windows]]&lt;br /&gt;
| Kategorie            = [[Programmbibliothek]], [[daemon]], [[Framework]]&lt;br /&gt;
| Lizenz               = [[GNU General Public License|GPL]] oder [[Academic Free License]]&lt;br /&gt;
| Deutsch              = ja&lt;br /&gt;
| Website              = [http://freedesktop.org/wiki/Software/dbus freedesktop.org/Software/dbus]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;D-Bus&amp;#039;&amp;#039;&amp;#039; (von {{enS|Desktop-Bus}}) ist eine [[Freie Software|freie]] [[Programmbibliothek]] zur [[Interprozesskommunikation]]. Sie orientiert sich insbesondere an den Bedürfnissen von [[Desktop-Umgebung]]en.&lt;br /&gt;
&lt;br /&gt;
Es ist Bestandteil des [[freedesktop.org]]-Projektes und wird bei nahezu jeder modernen [[Linux-Distribution]] eingesetzt. In seiner Gesamtheit stellt D-Bus mit all seinen Komponenten allgemein eine leichtgewichtige [[Middleware]] ([[Daemon]] zur Unterstützung der Interprozesskommunikation) sowie im Speziellen einen [[Object Request Broker]] (ORB; eine Art Kommunikations-Vermittler für Objekte) dar.&lt;br /&gt;
&lt;br /&gt;
== Grundlagen ==&lt;br /&gt;
[[Datei:D-Bus simple.de.svg|mini|Ein vereinfachtes Kommunikationsschema: Ein Datei-Browser erhält von einem Hardwareüberwachungsprogramm Mitteilung, dass neue Hardware angeschlossen wurde]]&lt;br /&gt;
&lt;br /&gt;
Über D-Bus können Programme miteinander kommunizieren. Im rechts gezeigten Beispiel meldet sich ein [[Dateimanager]] bei einem systemweiten Programm an, das über die [[Hardware]], die am Computer angeschlossen ist, informiert (in diesem Beispiel der [[HAL (Software)|Hardware-Abstraction-Layer]]-[[Daemon]], kurz &amp;#039;&amp;#039;hal&amp;#039;&amp;#039;-Daemon). Der &amp;#039;&amp;#039;hal&amp;#039;&amp;#039;-Daemon informiert den Dateimanager nun bei Änderungen an der Hardware, sodass dieser z.&amp;amp;nbsp;B. beim Einstecken eines [[USB-Stick]]s diesen automatisch [[Mounten|einhängen]] und die Inhalte anzeigen kann.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Einzelne Programme bekommen über die [[Programmbibliothek]] &amp;#039;&amp;#039;libdbus&amp;#039;&amp;#039; die Möglichkeit, sich paarweise gegenseitig zu kontaktieren und Nachrichten auszutauschen. Angesprochen werden jeweils Objekte, deren Benennung an [[Pfadname|Dateisystempfade]] erinnert, etwa &amp;lt;code&amp;gt;/org/kde/kspread/sheets/3/cells/4/5&amp;lt;/code&amp;gt;. Um sicherzustellen, dass verschiedene Programme auseinandergehalten werden können, sind die D-Bus-Objekte in einem [[Namensraum]] zusammengefasst. Diese Namensräume enthalten meist die [[Domain (Internet)|Domains]] der Entwickler (zum Beispiel &amp;lt;code&amp;gt;/org/kde&amp;lt;/code&amp;gt; für die Programme von &amp;lt;code&amp;gt;[[KDE|kde]].org&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Daneben existiert ein ausführbarer Nachrichtenbusdaemon &amp;#039;&amp;#039;dbus&amp;#039;&amp;#039;, mit dem sich mehrere Anwendungen verbinden können. Der [[Daemon]] kann Nachrichten von einer Anwendung an eine oder mehrere Anwendungen weiterleiten.&lt;br /&gt;
&lt;br /&gt;
Gedacht ist D-Bus zum einen für die Kommunikation zwischen [[Desktop (grafische Benutzeroberfläche)|Desktopanwendungen]] derselben Sitzung (der sogenannte &amp;#039;&amp;#039;Session&amp;#039;&amp;#039;-Bus) und zum anderen für die Kommunikation zwischen der Desktopsitzung und Teilen des Betriebssystems wie dem [[Kernel (Betriebssystem)|Kernel]], den verschiedenen Systemdaemonen oder Systemprozessen (&amp;#039;&amp;#039;System&amp;#039;&amp;#039;-Bus).&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Bereits vor der Einführung eines standardisierten Nachrichtensystems für Desktop-Anwendungen durch [[freedesktop.org]] haben die beiden beliebtesten [[Desktop Environment]]s [[KDE]] und [[Gnome]] jeweils unterschiedliche, zueinander inkompatible Implementierungen des gleichen Konzepts verwendet, und zwar [[DCOP]] (&amp;#039;&amp;#039;Desktop Communication Protocol&amp;#039;&amp;#039;) für KDE und eine [[Common Object Request Broker Architecture|CORBA]]-ähnliche Architektur (&amp;#039;&amp;#039;{{lang|en|Common Object Request Broker Architecture}}&amp;#039;&amp;#039;) für GNOME.&lt;br /&gt;
&lt;br /&gt;
D-Bus verfügt über mehr Funktionen und wurde nach der Standardisierung von den Desktop-Environment-Projekten schnell angenommen und die Implementierungen der eigenen Systeme zugunsten des Standards fallengelassen. Das Standardprotokoll wurde damit zu einem maßgeblichen Faktor für den Linux-Desktop, da die Diskrepanzen zwischen den Benutzeroberflächen damit zunehmend fallen.&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
Die D-Bus-Spezifikation besteht aus drei Teilen, und zwar im Einzelnen dem D-Bus-Daemon, der [[#D-Bus-Bibliothek (libdbus)|D-Bus-Bibliothek &amp;#039;&amp;#039;libdbus&amp;#039;&amp;#039;]] sowie dem eigentlichen [[#D-Bus-Protokoll|D-Bus-Protokoll]].&lt;br /&gt;
&lt;br /&gt;
=== D-Bus-Daemon ===&lt;br /&gt;
Der D-Bus-[[Daemon]] implementiert einen sogenannten Nachrichtenbus (&amp;#039;&amp;#039;{{lang|en|message bus}}&amp;#039;&amp;#039;), der in seiner Funktion einem [[Object Request Broker]] gleichkommt. Eine beliebige Anzahl von [[Client]]s verbindet sich mit dem &amp;#039;&amp;#039;daemon&amp;#039;&amp;#039;, basierend auf dem D-Bus-Protokoll und in der Regel unter Zuhilfenahme von &amp;#039;&amp;#039;libdbus&amp;#039;&amp;#039;. Einzelne (L)[[Remote Procedure Call|RPC]]-Aufrufe werden vom &amp;#039;&amp;#039;daemon&amp;#039;&amp;#039; entgegengenommen und an den zuständigen Client vermittelt, der &amp;#039;&amp;#039;daemon&amp;#039;&amp;#039; ist somit ein Broker. Die (L)RPC-Aufrufe agieren auf abstrakten Objekten und stellen in Anlehnung an das [[Objektorientierte Programmierung|OOP]]-Objektmodell demnach Methodenaufrufe dar. Ferner bietet der daemon noch Dienste wie &amp;#039;&amp;#039;Activation&amp;#039;&amp;#039; an. Zuletzt stellt der daemon natürlich zeitgleich, basierend auf den Einzelverbindungen, eine eins-zu-viele-Kommunikation ([[Broadcast]]) zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
=== D-Bus-Bibliothek (libdbus) ===&lt;br /&gt;
Die D-Bus-Bibliothek stellt eine [[Referenzimplementierung]] des D-Bus-Protokolls bzw. der D-Bus-Spezifikation als Ganzes dar. Sie bietet eine [[Programmierschnittstelle|API]] in der [[Programmiersprache C]], mit der zwei Prozesse eine Verbindung eingehen können, um danach via LRPC/RPC zu kommunizieren. Sie stellt weiterhin das nötige [[Marshalling]] zur Verfügung, also das Ausrichten und korrekte Anordnen der Bytes für den Transport. Letztlich bietet die API alle Dienste für eine einfach abstrahierte Punkt-zu-Punkt-(Prozess-zu-Prozess-)Interprozesskommunikation.&lt;br /&gt;
&lt;br /&gt;
Aufbauend auf &amp;#039;&amp;#039;libdbus&amp;#039;&amp;#039; haben sich Implementierungen für alle verbreiteten [[Programmiersprache]]n und [[Framework]]s entwickelt, bei letzterem insbesondere auf [[Qt (Bibliothek)|Qt]] und [[GLib]] ([[GTK+]]) zugeschnittene Implementierungen. So verwendet [[Gnome]] GDBus und [[KDE Software Compilation 4|KDE4]] QtDBus.&lt;br /&gt;
&lt;br /&gt;
=== D-Bus-Protokoll ===&lt;br /&gt;
Das D-Bus-Protokoll ist ein [[Binärcode|binäres]] IPC-Protokoll. Spezifiziert sind sowohl Primitivtypen als auch zulässige Nachrichtentypen sowie die Kodierung für den Transport. Grundlegend basiert das Protokoll auf dem Prinzip des Nachrichtentauschs und spezifiziert darauf basierende entfernte Aufrufe (LRPCs/[[Remote Procedure Call|RPCs]]).&lt;br /&gt;
&lt;br /&gt;
== Kdbus, bus1 und dbus-broker ==&lt;br /&gt;
Dbus ist funktionell limitiert und langsamer als alternative Ansätze für Interprozesskommunikation, weshalb beispielsweise Android statt auf Dbus auf das eigene System &amp;#039;&amp;#039;Binder&amp;#039;&amp;#039; setzt.&lt;br /&gt;
Um dies zu beheben, entwickelten [[Greg Kroah-Hartman]] und andere Linux-Entwickler mit Kdbus (&amp;#039;&amp;#039;{{lang|en|Kernel D-Bus}}&amp;#039;&amp;#039;) eine D-Bus-Implementierung für den [[Linux-Kernel]]. Kdbus ist deutlich schneller als die bisherige [[Ring (CPU)|Userspace]]-Lösung. Außerdem können durch die effizientere Architektur (≤ 2 statt 10 Kopien) auch große Datenmengen (im [[Gibibyte|GiB]]-Bereich) zwischen Prozessen ausgetauscht werden.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Thorsten Leemhuis |url=//www.heise.de/open/artikel/Kdbus-Neue-Interprozesskommunikation-fuer-den-Linux-Kernel-2089531.html |titel=Kdbus: Neue Interprozesskommunikation für den Linux-Kernel |hrsg=&amp;#039;&amp;#039;[[Heise online|Heise]]&amp;#039;&amp;#039; |datum=2014-01-20 |abruf=2015-05-26}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://0pointer.de/public/devconf-kdbus.pdf Vortragsfolien Anatomy of kdbus] (englisch; PDF; 250&amp;amp;nbsp;kB) – [[Lennart Poettering]], Februar 2014&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://download.tizen.org/misc/media/conference2014/slides/tdc2014-kdbus-in-tizen3.pdf Vortragsfolien kdbus in Tizen 3.0] (englisch; PDF; 2,1&amp;amp;nbsp;MB) – siehe Gegenüberstellung unter &amp;#039;&amp;#039;{{lang|en|D-Bus vs kdbus}}&amp;#039;&amp;#039; auf Seite 7; 2014&amp;lt;/ref&amp;gt;&lt;br /&gt;
Kdbus scheiterte jedoch aus technischen Gründen und wurde nicht in den Linux-Kernel aufgenommen. Als neue Alternative wurde im August 2016 Bus1 vorgeschlagen.&amp;lt;ref&amp;gt;{{Literatur |Titel=Bus1: Neues Interprozesskommunikationssystem für Linux vorgestellt |Sammelwerk=[[Pro-Linux]] |Datum=2016-08-18 |Online=https://www.pro-linux.de/news/1/23877/bus1-neues-interprozesskommunikationssystem-für-linux-vorgestellt.html}}&amp;lt;/ref&amp;gt; Im August 2017 wurde von denselben Entwicklern mit dbus-broker ein dritter Ansatz für die Lösung der Probleme von dbus vorgeschlagen, der kompatibel zur DBus-Spezifikation sein soll.&amp;lt;ref&amp;gt;{{Literatur |Titel=dbus-broker erfindet DBus neu |Sammelwerk=Pro-Linux |Datum=2017-08-24 |Online=https://www.pro-linux.de/news/1/25079/dbus-broker-erfindet-dbus-neu.html}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://freedesktop.org/wiki/Software/dbus D-Bus-Homepage auf freedesktop.org] (englisch)&lt;br /&gt;
* [https://pythonhosted.org/txdbus/dbus_overview.html D-Bus Overview] (englisch)&lt;br /&gt;
* [http://dbus.freedesktop.org/doc/dbus-tutorial.html D-Bus-Tutorial] (englisch)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Dbus}}&lt;br /&gt;
[[Kategorie:Daemon]]&lt;br /&gt;
[[Kategorie:Freie Systemsoftware]]&lt;br /&gt;
[[Kategorie:C++-Bibliothek]]&lt;br /&gt;
[[Kategorie:Freedesktop.org]]&lt;/div&gt;</summary>
		<author><name>~2025-36945-24</name></author>
	</entry>
</feed>