Prototyp krajowego systemu operacyjnego Phantom na bazie Genode będzie gotowy do końca roku

Dmitrij Zawalischin opowiedział o projekcie portowania maszyny wirtualnej systemu operacyjnego Phantom do pracy w środowisku mikrojądrowego systemu operacyjnego Genode. W wywiadzie zaznacza, że główna wersja Phantom jest już gotowa do projektów pilotażowych, a wersja oparta na Genode zostanie przygotowana do zastosowania pod koniec roku. Na stronie projektu na razie dostępny jest tylko działający konceptualny prototyp, którego stabilność i funkcjonalność nie osiągnęły jeszcze poziomu odpowiedniego do wykorzystania przemysłowego, a wśród najbliższych planów wymieniane jest utworzenie wersji alfa, która będzie odpowiednia do eksperymentów dla zewnętrznych deweloperów.

Kod projektu jest rozpowszechniany na licencji LGPL, ale ostatnia zmiana w głównym repozytorium datowana jest na listopad 2019 roku. Związana z projektem publiczna aktywność jest skoncentrowana w repozytorium z forkiem dla Genode, które od grudnia 2020 roku wspiera Anton Antonow, student z Uniwersytetu Innopolis.

System operacyjny Phantom od początku lat 2000 rozwijał się jako osobisty projekt Dmitrija Zawalischina, a od 2010 roku został przeniesiony pod skrzydła firmy Digital Zone, założonej przez Dmitrija. System wyróżnia się orientacją na wysoką niezawodność i zastosowaniem koncepcji „wszystko jest obiektem” zamiast „wszystko jest plikiem”, co pozwala na obejście się bez użycia plików poprzez zachowanie stanu pamięci i ciągły cykl pracy. Aplikacje w Phantom nie kończą się, lecz są jedynie wstrzymywane i wznawiane z przerwanego punktu. Wszystkie zmienne i struktury danych mogą być przechowywane tak długo, jak to konieczne dla aplikacji, przy czym programista nie musi się specjalnie troszczyć o zachowanie danych.

Aplikacje w Phantom są kompilowane do kodu bajtowego, który jest wykonywany w wirtualnej maszynie stertowej, podobnej do wirtualnej maszyny Java. Wirtualna maszyna zapewnia trwałość pamięci aplikacji — system okresowo zapisuje zrzuty stanu wirtualnej maszyny na nośniku trwałym. Po wyłączeniu lub awaryjnym zakończeniu pracy można kontynuować od ostatniego zapisanego zrzutu pamięci. Zrzuty są tworzone w trybie asynchronicznym i bez zatrzymywania pracy wirtualnej maszyny, ale w zrzucie zapisany jest jednoczesny moment, jakby wirtualną maszynę zatrzymano, zapisano na dysku i ponownie uruchomiono.

Wszystkie aplikacje działają w wspólnej globalnej przestrzeni adresowej, co pozwala na uniknięcie przełączania kontekstu między jądrem a aplikacjami, a także znacząco upraszcza i przyspiesza interakcję między aplikacjami wykonywanymi w wirtualnej maszynie, które mogą wymieniać obiekty poprzez przekazywanie odwołań. Podział dostępu odbywa się na poziomie obiektów, do których odwołania można uzyskać tylko poprzez wywołanie odpowiednich metod (brak arytmetyki wskaźników). Jakiekolwiek dane, w tym wartości liczbowe, są traktowane jako oddzielne obiekty.

Dla aplikacji praca wydaje się ciągła i nie zależy od ponownych uruchomień systemu operacyjnego, awaryjnych zakończeń pracy i wyłączeń komputera. Model programowania dla Phantom porównywany jest z uruchamianiem aplikacji, które nigdy się nie zatrzymują. serwera Aplikacji dla obiektowego języka programowania. Jednym z głównych sposobów tworzenia aplikacji jest portowanie programów dla Phantom napisanych w języku Java, co ułatwia podobieństwo wirtualnej maszyny Phantom do JVM. Oprócz kompilatora kodu bajtowego dla języka Java, projektem planowane jest stworzenie kompilatorów dla Pythona i C#, a także realizacja translatora z kodu pośredniego WebAssembly.

Aby przeprowadzać operacje wymagające dużej wydajności, takie jak przetwarzanie wideo i dźwięku, istnieje możliwość uruchamiania binarnych obiektów z natywnym kodem w osobnych wątkach (do kompilacji binarnych obiektów używa się LLVM). Aby uzyskać dostęp do niskopoziomowych usług jądra, część klas VM („wewnętrzne” klasy) jest realizowana na poziomie jądra systemu operacyjnego. Dla uruchamiania aplikacji Linux przewidziana jest warstwa POSIX, która emuluje wywołania niezbędne do działania procesów Unix (trwałość aplikacji w warstwie POSIX jest obecnie nieosiągalna).

Prototyp krajowego systemu operacyjnego Phantom na bazie Genode będzie gotowy do końca roku

Tradycyjny system operacyjny Phantom oprócz maszyny wirtualnej zawiera własne jądro z realizacją wątków, menedżera pamięci, zbieracza śmieci, mechanizmów synchronizacji, systemu wejścia/wyjścia oraz sterowników do pracy z urządzeniami, co znacznie utrudnia doprowadzenie projektu do gotowości do szerokiego zastosowania. Oddzielnie rozwijane są komponenty z stosu sieciowego, graficznego podsystemu i interfejsu użytkownika. Co ciekawe, graficzny podsystem oraz menedżer okien działają na poziomie jądra.

Aby zwiększyć stabilność, przenośność i bezpieczeństwo projektu, podjęto próbę przeniesienia maszyny wirtualnej Phantom do pracy z wykorzystaniem komponentów otwartego mikrojądrowego systemu operacyjnego Genode, którego rozwój nadzoruje niemiecka firma Genode Labs. Dla tych, którzy chcą poeksperymentować z Phantom na bazie Genode, przygotowano specjalne środowisko kompilacyjne oparte na Docker.

Wykorzystanie Genode umożliwi korzystanie z już sprawdzonych mikrojąder i sterowników, a także przeniesienie sterowników do przestrzeni użytkownika (w obecnej wersji sterowniki są napisane w C i wykonują się na poziomie jądra Phantom). Pojawi się również możliwość wykorzystania mikrojądra seL4, które przeszło matematyczną weryfikację niezawodności, potwierdzając, że realizacja w pełni odpowiada specyfikacjom określonym w języku formalnym. Rozważa się możliwość przygotowania podobnego dowodu niezawodności także dla maszyny wirtualnej Phantom, co pozwoli osiągnąć weryfikację całego środowiska systemu operacyjnego.

Głównym zastosowaniem portu opartego na Genode jest rozwój aplikacji dla różnych urządzeń przemysłowych i wbudowanych. Obecnie przygotowano już zestaw zmian dla maszyny wirtualnej oraz dodano działające na Genode powiązania dla komponentów jądra zapewniających trwałość oraz podstawowe niskopoziomowe interfejsy. Zauważono, że maszyna wirtualna Phantom już może działać w 64-bitowym środowisku Genode, ale jeszcze pozostaje do zrealizowania działanie VM w trybie trwałości, przerobienie podsystemu sterowników oraz dostosowanie komponentów ze stosu sieciowego i podsystemu graficznego do Genode.

Prototyp krajowego systemu operacyjnego Phantom na bazie Genode będzie gotowy do końca roku
Prototyp krajowego systemu operacyjnego Phantom na bazie Genode będzie gotowy do końca roku
Prototyp krajowego systemu operacyjnego Phantom na bazie Genode będzie gotowy do końca roku


Źródło: opennet.ru
Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster