Login
Newsletter
Werbung

Do, 27. Oktober 2016, 16:07

Software::Kernel

Erste Implementation von Bus1 erschienen

Die Kernel-Entwickler David Herrmann und Tom Gundersen haben die erste Implementation des neuen Interprozesskommunikationssystems Bus1 für den Linux-Kernel vorgelegt. Zur Aufnahme in den Kernel ist Bus1 noch nicht bereit, aber über die Patches soll nun diskutiert werden.

bus1.org

Als Standard für die Interprozesskommunikation hat sich unter Linux weitgehend DBus durchgesetzt, nicht jedoch in Android, wo die Google-Entwicklung Binder zum Einsatz kommt. Binder ist allerdings in einer Hinsicht bereits weiter, da es wesentliche Teile im Kernel implementiert und dadurch wesentlich schneller und weniger limitiert ist. Der Versuch von Greg Kroah-Hartman und anderen, mit Kdbus eine entsprechende Beschleunigung auch für DBus im Kernel zu implementieren, scheiterte vor über einem Jahr an technischen Gründen, da verschiedene Entwickler es weder für allgemein noch für schnell genug hielten, und wurde danach auf unbestimmte Zeit verschoben.

Der Bedarf für ein Interprozesskommunikations-System ähnlich DBus, nur schneller, besteht aber weiterhin. Die bestehenden Lösungen haben alle den einen oder anderen Nachteil. Daher hatten David Herrmann und Tom Gundersen vor zwei Monaten ein neues System vorgestellt, das sie Bus1 nannten. Jetzt, nach insgesamt mehr als acht Monaten Arbeit durch Herrmann, Gundersen und andere, ist Bus1 so weit implementiert, dass der Code zum Review bereit steht.

Nach Angaben von Herrmann entstand Bus1 aus dem Kdbus-Projekt, ist aber von Grund auf neu entwickelt. Neben DBus dienten auch Androids Binder, Mach IPC und andere als Inspiration. Sollte Bus1 akzeptiert werden, dann könnte es mit Hilfe einer Anpassungsschicht auch zur Beschleunigung bestehender DBus-Anwendungen genutzt werden.

Bus1 implementiert einen Kommunikationskanal zwischen beliebig vielen Prozessen auf einem einzelnen Rechner. Dieser soll sicher sein und auf Capabilities für die Zugriffsrechte aufbauen. Bus1 soll zudem sehr effizient sein und mit minimalem Overhead arbeiten. Sowohl Unicast- als auch Multicast-Nachrichten können gesendet werden. Dadurch, dass es keine zentrale Instanz gibt, soll das System mit der Zahl der Prozessorkerne im System skalieren. Eine bedeutende Eigenschaft ist außerdem, dass die globale Reihenfolge der Nachrichten erhalten bleibt, das bedeutet, dass sich Nachrichten nicht überholen können.

Die jetzt als Patch-Serie vorgestellte Implementation umfasst mit Dokumentation fast 10.000 Zeilen und ist noch nicht für die Aufnahme in den Kernel gedacht. Die Diskussion über den Code hat gerade erst begonnen. Die erste Reaktion kam von Linus Torvalds, der wissen wollte, wie das System sich vor Denial-of-Service-Angriffen schützt. David Herrmann erklärte die Strategie, die sich nicht mit den Vorstellungen von Torvalds deckt, aber trotzdem ausreichend sein könnte. Ein anderer noch zu diskutierender Punkt ist, dass Bus1 aktuell mit einem zeichenorientierten Gerät arbeitet, das alle kommunizierenden Prozesse öffnen müssen. Die Frage ist, ob stattdessen neue Systemaufrufe ersonnen werden sollen. Arnd Bergmann schreibt in einer ersten Analyse, dass das keinesfalls einfach sei, allerdings sei es der bevorzugte Weg. Die weitere Entwicklung von Bus1 lässt sich wie bisher auf Github verfolgen.

Werbung
Pro-Linux
Pro-Linux @Twitter
Neue Nachrichten
Werbung