Dmitry Zavalishin talte om projektet til portering af den virtuelle maskine i operativsystemet Phantom til at fungere i miljøet af det mikrokerne-baserede operativsystem Genode. I et interview nævnes det, at hovedversionen af Phantom allerede er klar til pilotprojekter, og at versionen baseret på Genode vil blive klargjort til brug ved årets slutning. På projektets hjemmeside er der dog kun en fungerende konceptuel prototypen offentliggjort, hvis stabilitet og funktionalitet endnu ikke er nået et niveau, der er egnet til industriel brug, og blandt de nærmeste planer nævnes oprettelsen af en alfa-version, der er egnet til eksperimenter af eksterne udviklere.
Koden til projektet distribueres under LGPL-licensen, men den seneste ændring i det primære repository er dateret til november 2019. Den offentlige aktivitet relateret til projektet er koncentreret i et repository med en fork til Genode, som siden december 2020 er blevet vedligeholdt af Anton Antonov, en studerende fra universitetet i Innopolis.
Operativsystemet Phantom har siden begyndelsen af 2000'erne udviklet sig som et personligt projekt af Dmitry Zavalishin, og fra 2010 blev det overført til selskabet Digital Zone, som blev grundlagt af Dmitry. Systemet er bemærkelsesværdigt for sin orientering mod høj pålidelighed og brugen af konceptet 'alt er et objekt' i stedet for 'alt er en fil', hvilket muliggør at undgå brug af filer ved at gemme tilstanden af hukommelsen og opretholde en kontinuerlig arbejdsproces. Applikationer i Phantom afsluttes ikke, men pauses blot og genoptager arbejdet fra det punkt, hvor de blev afbrudt. Alle variabler og datakonstruktioner kan opbevares så længe som nødvendigt for applikationen, og programmøren skal ikke bekymre sig om at gemme data.
Applikationerne i Phantom kompilieres til bytecode, der køres på en stack-baseret virtuel maskine, der ligner Java Virtual Machine. Den virtuelle maskine sikrer vedholdenhed af applikationernes hukommelse — systemet laver med jævne mellemrum snapshots af den virtuelle maskines tilstand til et permanent lager. Efter nedlukning eller en uventet afslutning kan arbejdet genoptages fra det seneste gemte hukommelsessnapshot. Snapshots oprettes asynkront og uden at stoppe den virtuelle maskine, men i snapshot'et fastlægges en øjeblikkelig tilstand, som om den virtuelle maskine blev stoppet, gemt på disk og derefter igen startet.
Alle applikationer kører i et fælles globalt adresseområde, som eliminerer behovet for kontekstskift mellem kernen og applikationerne samt væsentligt forenkler og accelererer interaktionen mellem de kørende applikationer på den virtuelle maskine, som kan udveksle objekter gennem referenceoverførsel. Adgangsopdelingen sker på objektniveau, hvor referencer kun kan opnås gennem det relevante metodeopkald (pointeraritmetik findes ikke). Enhver data, inklusive numeriske værdier, behandles som separate objekter.
For applikationen ser arbejdet sammenhængende ud og er uafhængigt af genstart af operativsystemet, uventede afslutninger og nedlukninger af computeren. Programmeringsmodellen for Phantom sammenlignes med at køre applikationer, der aldrig stopper. server Som en af de primære metoder til applikationsudvikling overvejes portering af Java-programmer til Phantom, hjulpet af ligheden mellem Phantom's virtuelle maskine og JVM. Ud over bytecode-kompilatoren til Java-sproget planlægger projektet at skabe kompilatorer til Python og C#, samt implementere en oversætter fra mellemformat til WebAssembly.
For operations that require high performance, such as video and audio processing, there is the possibility of running separate threads of binary objects with native code (LLVM is used to compile these binary objects). To access low-level kernel services, some VM classes ('internal' classes) are implemented at the OS kernel level. A POSIX layer is provided for running Linux applications, which emulates the calls necessary for Unix processes (persistence for applications in the POSIX layer is not yet supported).

The traditional Phantom OS, in addition to the virtual machine, includes its own kernel with thread implementation, a memory manager, a garbage collector, synchronization mechanisms, an input/output system, and drivers for hardware interaction, which significantly complicates the project's readiness for widespread use. Components with a network stack, graphics subsystem, and user interface are developed separately. Notably, the graphics subsystem and window manager operate at the kernel level.
To enhance stability, portability, and security, an attempt has been made to port the Phantom virtual machine to work with components of the open microkernel operating system Genode, which is supervised by the German company Genode Labs. A special build environment based on Docker has been prepared for those who wish to experiment with Phantom on Genode.
Using Genode will allow the use of already proven microkernels and drivers, as well as move drivers to user space (currently, drivers are written in C and run at the kernel level of Phantom). This will include the opportunity to use the seL4 microkernel, which has undergone mathematical verification of reliability, confirming that the implementation fully complies with the specifications set in a formal language. The possibility of preparing a similar reliability proof for the Phantom virtual machine is being considered, which would allow for the verification of the entire OS environment.
Som det primære anvendelsesområde for Genode-baserede porte nævnes udviklingen af applikationer til forskellige industrielle og indlejrede enheder. I øjeblikket er der allerede forberedt et sæt ændringer til den virtuelle maskine, og der er tilføjet funktionelle bindingslag til Genode for at sikre persistence af kernekomponenter og de vigtigste lave niveau-grænseflader. Det bemærkes, at virtual machine Phantom kan allerede køre i et 64-bit miljø på Genode, men det er stadig nødvendigt at implementere drift af VM i persisterende tilstand, redesignere driver underlaget og tilpasse Genode-komponenter med netværkstrukturen og den grafiske understøttelse.



Kilde: opennet.ru
