D-Bus

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

D-Bus ist ein IPC-Framework, also ein Software-System für die Interprozesskommunikation, das sich besonders an den Bedürfnissen von Arbeitsumgebungen einer grafischen Benutzeroberfläche orientiert. Es ist Bestandteil des freedesktop.org-Projektes und wird nahezu bei jeder Linux-Distribution eingesetzt, die über eine grafische Oberfläche verfügt.

Der D-Bus fungiert also als Kommunikationssystem, das Arbeitsumgebungen untereinander und mit den darunter liegenden Schichten bis hin zu Kernel und Hardware verbindet. Er steht also im Dienst der Interprozesskommunikation und stellt die Infrastruktur bereit, dank der sich Anwendungen untereinander und mit Teilen des Betriebssystems unterhalten können. Zwar gibt es schon von Anfang an die bewährten Unix-Interprozesskommunikationsmechanismen, doch beschränken diese sich auf Signale, Pipes, usw.

Es gibt viele konkurrierende Ansätze zum D-Bus-Konzept, z. B. Corba oder Microsofts DCOM. Sowohl Gnome wie auch KDE experimentierten zu Beginn mit eigenen Corba-Implementierungen. KDE setzt inzwischen auf DCOP, bei Gnome wirken die Corba-Altlasten noch im Komponentensystem Bonobo nach.

Die grundlegende Bibliothek "Libdbus" von D-Bus stellt nur Funktionen für die Kommunikation zweier Anwendungen zur Verfügung. Anwendungsentwickler machen von ihr normalerweise keinen Gebrauch. Für sie gibt es die auf der Glib-Programmierschnittstelle basierende Bibliothek "Libdbus-Glib", die eine objektorientierte C-Programmierschnittstelle bereitstellt. Auf dieser Ebene erweitern sich die Fähigkeiten von D-Bus hin zu einem Bus-System - wie es der Name bereits andeutet.

Der Serverprozess "dbus-daemon" läuft im Hintergrund und wartet auf Verbindungsanfragen von Anwendungen, die sich für bestimmte Ereignistypen registrieren, z. B. für das Ein- und Ausstecken von Hardware. Tritt ein solches Ereignis ein, schickt der D-Bus eine entsprechende Nachricht über den Bus und die Anwendungen können darauf reagieren.

Grundsätzlich gibt es auf Systemen, die D-Bus verwenden, zwei von je einem Serverprozess realisierte Busse:

  • Der System-Bus startet beim Bootvorgang und ist auch dann aktiv, wenn kein Benutzer angemeldet ist.
  • Der Session-Bus startet erst beim grafischen Login einer Desktop-Sitzung.

Das Binary "dbus-dameon" kennt für die beiden Modi die Befehlszeilenparameter "--system" bzw. "--session".

Zum Starten des Daemon enthält das D-Bus-Paket das Programm "dbus-launch", das unter anderem die nötigen Umgebungsvariablen setzt. Die meisten Distributionen starten damit den D-Bus-Daemon im Session-Modus zusammen mit der X-Sitzung. Der Session-Bus ermöglicht es Anwendungen, die zu einer Desktop-Sitzung gehören, miteinander zu sprechen. Das können auch Dienste sein, die z. B. die Arbeitsumgebung zur Verfügung stellt. Der System-Bus ist vor allem dafür gedacht, dass Desktop-Programme mit den darunter liegenden Schichten sprechen können. So kann eine Anwendung sich über den System-Bus für eine Hardwareklasse registrieren.

Events, die der Hardware Abstraction Layer aufgrund von Hardware-Interrupts der Bus-Controller auslöst, können Programme im Userspace auf vielfältige Weise auswerten. Unter Gnome kümmert sich z. B. der Gnome Volume Manager darum, unter KDE der Kioslave Media. Für die Desktop-unabhängige Reaktion lässt sich die Software lvman einsetzen, die z. B. auch unter Xfce funktioniert.

Weblinks

Vorlage:Weblinks1