Prototyp krajowego systemu operacyjnego Phantom opartego na Genode będzie gotowy przed końcem roku

Dmitry Zavalishin mówił o projekcie przeniesienia maszyny wirtualnej systemu operacyjnego Phantom do pracy w środowisku Genode microkernel OS. W wywiadzie zauważono, że główna wersja Phantoma jest już gotowa do projektów pilotażowych, a wersja oparta na Genode zostanie doprowadzona do użytku pod koniec roku. Jednocześnie na stronie internetowej projektu ogłoszono dotychczas tylko działający prototyp koncepcyjny, którego stabilność i funkcjonalność nie zostały doprowadzone do poziomu odpowiedniego do zastosowań przemysłowych, a wśród najbliższych planów jest stworzenie wersji alfa nadaje się do eksperymentów prowadzonych przez zewnętrznych programistów.

Kod projektu jest dystrybuowany na licencji LGPL, ale ostatnia zmiana w głównym repozytorium datowana jest na listopad 2019 r. Publiczna aktywność związana z projektem koncentruje się w repozytorium z widelcem dla Genode, które od grudnia 2020 roku prowadzi Anton Antonow, student z Innopolis University.

Od początku XXI wieku system operacyjny Phantom jest rozwijany jako osobisty projekt Dmitrija Zavalishina, a od 2000 roku jest przekazywany pod skrzydła utworzonej przez Dmitrija firmy Digital Zone. System wyróżnia się nastawieniem na wysoką niezawodność oraz wykorzystaniem koncepcji „wszystko jest obiektem” zamiast „wszystko jest plikiem”, co eliminuje użycie plików dzięki zachowaniu stanu pamięci i ciągłemu cyklowi praca. Aplikacje w Phantomie nie są przerywane, a jedynie wstrzymywane i wznawiane od miejsca, w którym zostały przerwane. Wszystkie zmienne i struktury danych mogą być przechowywane tak długo, jak wymaga tego aplikacja, a programista nie musi specjalnie dbać o zapisywanie danych.

Aplikacje w Phantom są kompilowane do kodu bajtowego, który działa na maszynie wirtualnej opartej na stosie, podobnie jak wirtualna maszyna Java. Maszyna wirtualna zapewnia trwałość pamięci aplikacji — system okresowo przesyła migawki stanu maszyny wirtualnej do trwałych nośników. Po wyłączeniu lub awarii praca może być kontynuowana począwszy od ostatniej zapisanej migawki pamięci. Migawki są tworzone asynchronicznie i bez zawieszania maszyny wirtualnej, ale migawka przechwytuje jednorazowy wycinek, tak jakby maszyna wirtualna została zatrzymana, zapisana na dysku i ponownie uruchomiona.

Wszystkie aplikacje działają we wspólnej globalnej przestrzeni adresowej, co eliminuje konieczność przełączania kontekstu między jądrem a aplikacjami oraz znacznie upraszcza i przyspiesza komunikację między aplikacjami działającymi na maszynie wirtualnej, która może wymieniać obiekty poprzez przekazywanie referencji. Separacja dostępu odbywa się na poziomie obiektów, do których referencje można uzyskać jedynie poprzez wywołanie odpowiednich metod (nie ma arytmetyki wskaźników). Wszelkie dane, w tym wartości liczbowe, są traktowane jako osobne obiekty.

W przypadku aplikacji praca wygląda na ciągłą i nie zależy od restartów systemu operacyjnego, awarii i wyłączeń komputera. Model programowania dla Phantom jest porównywany do uruchamiania nieprzerwanego serwera aplikacji dla obiektowego języka programowania. Portowanie programów Java dla Phantom jest uważane za jeden z głównych sposobów tworzenia aplikacji, czemu sprzyja podobieństwo maszyny wirtualnej Phantom do JVM. Oprócz kompilatora kodu bajtowego dla języka Java projekt planuje stworzenie kompilatorów dla Pythona i C#, a także implementację translatora z kodu pośredniego WebAssembly.

Do wykonywania operacji wymagających dużej wydajności, takich jak przetwarzanie wideo i audio, możliwe jest uruchamianie obiektów binarnych z natywnym kodem w osobnych wątkach (do budowy obiektów binarnych służy LLVM). Aby uzyskać dostęp do usług jądra niskiego poziomu, niektóre klasy VM (klasy „wewnętrzne”) są implementowane na poziomie jądra systemu operacyjnego. Do uruchamiania aplikacji systemu Linux zapewniana jest warstwa POSIX, która emuluje wywołania niezbędne do działania procesów systemu Unix (trwałość aplikacji w warstwie POSIX nie jest jeszcze zapewniona).

Prototyp krajowego systemu operacyjnego Phantom opartego na Genode będzie gotowy przed końcem roku

Tradycyjny Phantom OS, oprócz maszyny wirtualnej, zawiera własne jądro z implementacją wątków, menedżera pamięci, Garbage Collector, mechanizmy synchronizacji, system I/O oraz sterowniki do pracy ze sprzętem, co znacznie komplikuje wprowadzanie projekt do gotowości do powszechnego użytku. Oddzielnie opracowywane są komponenty ze stosem sieciowym, podsystemem graficznym i interfejsem użytkownika. Warto zauważyć, że podsystem graficzny i menedżer okien działają na poziomie jądra.

Aby poprawić stabilność, przenośność i bezpieczeństwo projektu podjęto próbę przeniesienia maszyny wirtualnej Phantom do pracy z wykorzystaniem komponentów otwartego mikrojądra systemu operacyjnego Genode, nad którego rozwojem czuwa niemiecka firma Genode Labs. Dla tych, którzy chcą poeksperymentować z Phantomem w oparciu o Genode, przygotowane zostało specjalne środowisko do budowania oparte na Dockerze.

Wykorzystanie Genode umożliwi wykorzystanie już przetestowanych mikrojąder i sterowników, a także przeniesienie sterowników w przestrzeń użytkownika (w obecnej formie sterowniki są napisane w C i działają na poziomie jądra Phantom). W szczególności możliwe będzie wykorzystanie mikrojądra seL4, które przeszło matematyczną weryfikację niezawodności, potwierdzając, że implementacja jest w pełni zgodna ze specyfikacjami określonymi w języku formalnym. Rozważana jest możliwość przygotowania podobnego dowodu niezawodności dla maszyny wirtualnej Phantom, który pozwoli na weryfikację całego środowiska SO.

Głównym obszarem zastosowania portu opartego na Genode jest rozwój aplikacji dla różnych urządzeń przemysłowych i wbudowanych. W chwili obecnej zestaw zmian dla maszyny wirtualnej został już przygotowany i dodano powiązania działające na Genode dla komponentów trwałości jądra i głównych interfejsów niskiego poziomu. Należy zauważyć, że maszyna wirtualna Phantom może już działać w 64-bitowym środowisku Genode, ale VM musi jeszcze zostać zaimplementowany w trybie trwałości, podsystem sterowników musi zostać przerobiony, a komponenty ze stosem sieciowym i podsystemem graficznym zostały być przystosowane do Genode.

Prototyp krajowego systemu operacyjnego Phantom opartego na Genode będzie gotowy przed końcem roku
Prototyp krajowego systemu operacyjnego Phantom opartego na Genode będzie gotowy przed końcem roku
Prototyp krajowego systemu operacyjnego Phantom opartego na Genode będzie gotowy przed końcem roku


Źródło: opennet.ru

Dodaj komentarz