Dmitry Zavalishin a vorbit despre proiectul de portare a mașinii virtuale a sistemului de operare Phantom pentru a funcționa în mediu cu sistemul de operare microkernel Genode. În interviu se menționează că versiunea principală a Phantom este deja gata pentru proiecte pilot, iar versiunea bazată pe Genode va fi finalizată pentru utilizare la sfârșitul anului. Deocamdată, pe site-ul proiectului este declarat doar un prototip conceptual funcțional, a cărui stabilitate și funcționalitate nu au fost aduse la un nivel adecvat pentru utilizarea industrială, iar printre planurile imediate se numără formarea unei versiuni alpha potrivite pentru experimentele dezvoltatorilor terți.
Codul proiectului este distribuit sub licența LGPL, dar ultima modificare în depozitul principal este datată noiembrie 2019. Activitatea publică asociată cu proiectul este concentrată în depozitul cu fork pentru Genode, care este susținut din decembrie 2020 de Anton Antonov, un student de la Universitatea Innopolis.
Sistemul de operare Phantom a evoluat ca un proiect personal al lui Dmitry Zavalishin încă din anii 2000, iar din 2010 a fost preluat de compania Digital Zone, fondată de Dmitry. Sistemul se remarcă prin orientarea spre fiabilitate ridicată și utilizarea conceptului „totul este obiect” în loc de „totul este fișier”, permițând evitarea utilizării fișierelor prin salvarea stării memoriei și un ciclu de lucru continuu. Aplicațiile din Phantom nu se încheie, ci sunt doar suspendate și își reiau activitatea de la punctul întrerupt. Toate variabilele și structurile de date pot fi stocate atât timp cât este necesar pentru aplicație, fără a fi nevoie ca programatorul să se preocupe special de salvarea datelor.
Aplicațiile din Phantom sunt compilate în bytecode, care este executat într-o mașină virtuală de tip stivă, asemănătoare cu mașina virtuală Java. Mașina virtuală asigură persistența memoriei aplicațiilor — sistemul face periodic capturi de stare a mașinii virtuale pe un suport permanent. După oprire sau încheierea anormală, munca poate fi continuată de la ultima captură salvată. Capturile sunt create în mod asynchron și fără suspendarea funcționării mașinii virtuale, dar în snapshot este fixată o secvență unică, ca și cum mașina virtuală ar fi fost oprită, salvată pe disc și apoi repornită.
Toate aplicațiile rulează într-un spațiu global de adresare comun, care permite evitarea comutării contextelor între kernel și aplicații, și de asemenea simplifică și accelerează interacțiunea între aplicațiile care rulează în mașina virtuală, acestea putând schimba obiecte prin transmiterea de referințe. Separarea accesului se face la nivel de obiecte, referințele la care pot fi obținute doar prin apelul metodelor corespunzătoare (aritmetica pointerilor este absentă). Orice date, inclusiv valorile numerice, sunt tratate ca obiecte separate.
Pentru aplicație, munca apare ca fiind continuă și nu depinde de repornirile sistemului de operare, încheierile anormale și opririle computerului. Modelul de programare pentru Phantom este comparat cu rularea unor aplicații care nu se opresc niciodată. server Ca una dintre metodele principale de dezvoltare a aplicațiilor, portarea programelor pentru Phantom scrise în Java este considerată, ceea ce este facilitat de similitudinea între mașina virtuală Phantom și JVM. Pe lângă compilatorul bytecode pentru Java, proiectul preconizează crearea de compilatoare pentru Python și C#, precum și implementarea unui translator din cod intermediar în WebAssembly.
Pentru a efectua operațiuni care necesită performanță ridicată, cum ar fi procesarea video și audio, este prevăzută posibilitatea de a rula obiecte binare cu cod nativ în fire separate (pentru compilarea obiectelor binare se folosește LLVM). Pentru accesul la serviciile de bază ale nucleului, o parte din clasele VM (clasele „interne”) sunt implementate la nivelul nucleului OS. Pentru rularea aplicațiilor Linux, există un strat de compatibilitate POSIX care emulează apelurile necesare pentru funcționarea proceselor Unix (până în prezent, persistența aplicațiilor în stratul POSIX nu este asigurată).

Sistemul de operare tradițional Phantom, pe lângă mașina virtuală, include un nucleu propriu cu implementări de fire, manager de memorie, colector de gunoi, mecanisme de sincronizare, sistem de intrare/ieșire și drivere pentru interacțiunea cu hardware-ul, ceea ce complică semnificativ aducerea proiectului la stadiul de utilizare pe scară largă. Componentelor cu stivă de rețea, subsistem grafic și interfață utilizator le sunt dezvoltate separat. Este demn de menționat că subsistemul grafic și managerul de feron ce funcționează la nivelul nucleului.
Pentru a îmbunătăți stabilitatea, portabilitatea și securitatea proiectului, a fost făcută o încercare de a transfera mașina virtuală Phantom pentru a funcționa utilizând componentele sistemului de operare cu micro-nucleu deschis Genode, al cărei dezvoltare este coordonată de compania germană Genode Labs. Pentru cei interesați să experimenteze cu Phantom pe baza Genode, a fost pregătită o mediu special de construcție bazat pe Docker.
Utilizarea Genode va permite folosirea micro-nucleelor și driverelor deja testate, precum și mutarea driverelor în spațiul utilizatorului (în forma actuală, driverelor sunt scrise în C și rulează la nivelul nucleului Phantom). De asemenea, va exista posibilitatea utilizării micro-nucleului seL4, care a fost supus unei verificări matematice a fiabilității, confirmând că implementarea respectă în totalitate specificațiile stabilite într-un limbaj formal. Se ia în considerare posibilitatea de a pregăti o astfel de dovadă de fiabilitate și pentru mașina virtuală Phantom, ceea ce va permite verificarea întregului mediu al sistemului de operare.
Ca domeniu principal de aplicare al portului bazat pe Genode este dezvoltarea aplicațiilor pentru diverse dispozitive industriale și încorporate. În prezent, a fost deja pregătit un set de modificări pentru mașina virtuală și au fost adăugate legături funcționale deasupra Genode pentru a asigura persistența componentelor nucleului și a principalelor interfețe de nivel inferior. Se remarcă faptul că mașină virtuală Phantom poate deja funcționa în mediu de 64 de biți Genode, dar mai trebuie implementată funcționarea VM în modul de persistență, reproiectată subsistemul driverelor și adaptate componentele cu stiva de rețea și subsistemul grafic pentru Genode.



Sursa: opennet.ro
