Der Prototyp des inländischen Betriebssystems Phantom auf Basis von Genode wird noch in diesem Jahr fertig sein

Dmitry Zavalishin sprach über das Projekt der Portierung der virtuellen Maschine des Phantom-Betriebssystems für die Arbeit in der Genode-Mikrokernel-Betriebssystemumgebung. Im Interview heißt es, dass die Hauptversion von Phantom bereits für Pilotprojekte bereit sei und die auf Genode basierende Version Ende des Jahres einsatzbereit sein werde. Gleichzeitig wurde auf der Projektwebsite bisher nur ein funktionsfähiger konzeptioneller Prototyp angekündigt, dessen Stabilität und Funktionalität noch nicht auf ein für den industriellen Einsatz geeignetes Niveau gebracht wurden, und zu den nächsten Plänen gehört die Bildung einer Alpha-Version Geeignet für Experimente von Drittentwicklern.

Der Projektcode wird unter der LGPL-Lizenz vertrieben, die letzte Änderung im Haupt-Repository ist jedoch vom November 2019 datiert. Die mit dem Projekt verbundenen öffentlichen Aktivitäten konzentrieren sich auf das Repository mit einem Fork für Genode, das seit Dezember 2020 von Anton Antonov, einem Studenten der Innopolis University, verwaltet wird.

Seit Anfang der 2000er Jahre wurde das Phantom-Betriebssystem als persönliches Projekt von Dmitry Zavalishin entwickelt und seit 2010 unter die Fittiche des von Dmitry gegründeten Unternehmens Digital Zone übertragen. Das System zeichnet sich durch seinen Fokus auf hohe Zuverlässigkeit und die Verwendung des Konzepts „Alles ist ein Objekt“ anstelle von „Alles ist eine Datei“ aus, wodurch die Verwendung von Dateien aufgrund der Erhaltung des Speicherzustands und eines kontinuierlichen Kreislaufs entfällt arbeiten. Anwendungen im Phantom werden nicht beendet, sondern nur angehalten und dort fortgesetzt, wo sie aufgehört haben. Alle Variablen und Datenstrukturen können so lange gespeichert werden, wie es die Anwendung benötigt, und der Programmierer muss keine besondere Sorgfalt auf die Speicherung der Daten richten.

Anwendungen in Phantom werden in Bytecode kompiliert, der in einer stapelbasierten virtuellen Maschine ausgeführt wird, ähnlich der virtuellen Java-Maschine. Die virtuelle Maschine sorgt für Persistenz des Anwendungsspeichers – das System schreibt regelmäßig Snapshots des Zustands der virtuellen Maschine auf persistente Medien. Nach dem Herunterfahren oder Absturz kann die Arbeit ab dem zuletzt gespeicherten Speicher-Snapshot fortgesetzt werden. Snapshots werden asynchron und ohne Anhalten der virtuellen Maschine erstellt. Ein Snapshot erfasst jedoch einen einmaligen Abschnitt, als ob die virtuelle Maschine gestoppt, auf der Festplatte gespeichert und erneut gestartet würde.

Alle Anwendungen werden in einem gemeinsamen globalen Adressraum ausgeführt, wodurch Kontextwechsel zwischen Kernel und Anwendungen überflüssig werden und die Kommunikation zwischen Anwendungen, die in einer virtuellen Maschine ausgeführt werden, die Objekte durch Referenzübergabe austauschen kann, erheblich vereinfacht und beschleunigt wird. Die Zugriffstrennung erfolgt auf der Ebene von Objekten, auf die nur durch Aufruf der entsprechenden Methoden verwiesen werden kann (es gibt keine Zeigerarithmetik). Alle Daten, einschließlich numerischer Werte, werden als separate Objekte behandelt.

Für die Anwendung sieht die Arbeit kontinuierlich aus und hängt nicht von Neustarts, Abstürzen und Herunterfahren des Computers ab. Das Programmiermodell für Phantom wird mit dem Betrieb eines ununterbrochenen Anwendungsservers für eine Objektprogrammiersprache verglichen. Die Portierung von Java-Programmen für Phantom gilt als eine der Hauptmethoden zur Entwicklung von Anwendungen, was durch die Ähnlichkeit der virtuellen Phantom-Maschine mit der JVM erleichtert wird. Neben dem Bytecode-Compiler für die Java-Sprache plant das Projekt die Erstellung von Compilern für Python und C# sowie die Implementierung eines Übersetzers aus dem WebAssembly-Zwischencode.

Um Vorgänge auszuführen, die eine hohe Leistung erfordern, wie z. B. Video- und Audioverarbeitung, ist es möglich, Binärobjekte mit nativem Code in separaten Threads auszuführen (LLVM wird zum Erstellen von Binärobjekten verwendet). Um auf Kerneldienste auf niedriger Ebene zuzugreifen, werden einige VM-Klassen („interne“ Klassen) auf der Kernelebene des Betriebssystems implementiert. Zur Ausführung von Linux-Anwendungen wird eine POSIX-Schicht bereitgestellt, die die für den Betrieb von Unix-Prozessen notwendigen Aufrufe emuliert (Persistenz für Anwendungen in der POSIX-Schicht ist noch nicht gewährleistet).

Der Prototyp des inländischen Betriebssystems Phantom auf Basis von Genode wird noch in diesem Jahr fertig sein

Das traditionelle Phantom OS umfasst neben der virtuellen Maschine einen eigenen Kernel mit der Implementierung von Threads, einem Speichermanager, einem Garbage Collector, Synchronisationsmechanismen, einem I/O-System und Treibern für die Arbeit mit Geräten, was das Einbringen erheblich erschwert das Projekt zur flächendeckenden Nutzung zu bringen. Separat werden Komponenten mit einem Netzwerkstack, einem grafischen Subsystem und einer Benutzeroberfläche entwickelt. Bemerkenswert ist, dass das Grafiksubsystem und der Fenstermanager auf Kernel-Ebene arbeiten.

Um die Stabilität, Portabilität und Sicherheit des Projekts zu verbessern, wurde versucht, die virtuelle Maschine Phantom mithilfe der Komponenten des offenen Mikrokernel-Betriebssystems Genode zum Laufen zu bringen, dessen Entwicklung von der deutschen Firma Genode Labs überwacht wird. Für diejenigen, die mit Phantom auf Basis von Genode experimentieren möchten, wurde eine spezielle Build-Umgebung auf Basis von Docker vorbereitet.

Durch die Verwendung von Genode wird es möglich, bereits getestete Mikrokernel und Treiber zu verwenden und Treiber in den Benutzerbereich zu bringen (in ihrer aktuellen Form sind die Treiber in C geschrieben und werden auf der Phantom-Kernel-Ebene ausgeführt). Insbesondere wird es möglich sein, den seL4-Mikrokernel zu verwenden, der die mathematische Überprüfung der Zuverlässigkeit bestanden hat und bestätigt, dass die Implementierung vollständig den in der formalen Sprache festgelegten Spezifikationen entspricht. Es wird darüber nachgedacht, einen ähnlichen Zuverlässigkeitsnachweis für die virtuelle Maschine Phantom zu erstellen, der eine Überprüfung der gesamten Betriebssystemumgebung ermöglicht.

Der Hauptanwendungsbereich des Genode-basierten Ports ist die Entwicklung von Anwendungen für verschiedene Industrie- und Embedded-Geräte. Derzeit wurden bereits eine Reihe von Änderungen für die virtuelle Maschine vorbereitet und auf Genode laufende Bindungen für die Persistenzkomponenten des Kernels und die wichtigsten Low-Level-Schnittstellen hinzugefügt. Es wird darauf hingewiesen, dass die virtuelle Phantom-Maschine bereits in einer 64-Bit-Genode-Umgebung arbeiten kann, die VM jedoch noch im Persistenzmodus implementiert werden muss, das Treiber-Subsystem überarbeitet werden muss und Komponenten mit einem Netzwerk-Stack und einem Grafik-Subsystem vorhanden sind für Genode angepasst werden.

Der Prototyp des inländischen Betriebssystems Phantom auf Basis von Genode wird noch in diesem Jahr fertig sein
Der Prototyp des inländischen Betriebssystems Phantom auf Basis von Genode wird noch in diesem Jahr fertig sein
Der Prototyp des inländischen Betriebssystems Phantom auf Basis von Genode wird noch in diesem Jahr fertig sein


Source: opennet.ru

Kommentar hinzufügen