Dmitrij Zavalishin beszélt a Phantom operációs rendszer virtuális gépének Genode mikrokernel környezetbe történő portolási projektjéről. Az interjúban megjegyzésre kerül, hogy a Phantom fő verziója már készen áll a pilot projektekhez, a Genode alapú verzió pedig az év végére lesz készen áll a használatra. Jelenleg a projekten a használható koncepciós prototípus van bejelentve, amelynek stabilitása és funkcionalitása nem érte el az ipari felhasználás szintjét, és a közeljövő tervei között említik az alfa verzió kialakítását, amely alkalmas külső fejlesztők kísérletezésére.
A projekt kódja LGPL licenc alatt érhető el, de a fő tárolóban található legutolsó módosítás 2019 novemberére datálható. A projekthez kapcsolódó nyilvános aktivitás a Genode fork tárolóban összpontosul, amelyet 2020 december óta Anton Antonov, az Innopolis Egyetem hallgatója tart karban.
A Phantom operációs rendszer a 2000-es évek eleje óta Dmitrij Zavalishin személyes projektjeként fejlődött, és 2010 óta a Dmitrij által létrehozott Digital Zone céghez került. A rendszer figyelemre méltó a magas megbízhatóságra való orientáltsága és az "minden objektum" koncepció használata miatt, amely lehetővé teszi a fájlok nélküli működést az állapotok memóriában való megőrzésével és a folyamatos munkaciklussal. A Phantom alkalmazásai nem záródnak le, hanem csak szüneteltetődnek, és a megszakított pontnál folytatódnak. Minden változó és adatstruktúra annyi ideig tárolható, ameddig az alkalmazásnak szüksége van rá, anélkül hogy a programozónak külön figyelnie kellene az adatok megőrzésére.
A Phantom alkalmazások bytekódra fordulnak, amelyet egy olyan verembe épített virtuális gépen futtatnak, amely hasonló a Java virtuális géphez. A virtuális gép biztosítja az alkalmazások memóriájának tartósságát — a rendszer időszakonként állapotfelvételeket készít a virtuális gépről, amelyeket tartós tárolóra ír. Kikapcsolás vagy váratlan leállás esetén a munka a legutolsó mentett memóriaképből folytatható. A képek aszinkron módon készülnek, anélkül, hogy leállítanák a virtuális gép működését, de a pillanatkép egy egyidejű vágtát rögzít, mintha a virtuális gépet leállították volna, a lemezre írták, majd újraindították volna.
Minden alkalmazás egy közös globális címzési térben fut, amely lehetővé teszi a mag és az alkalmazások közötti váltások elkerülését, továbbá jelentősen egyszerűsíti és felgyorsítja a virtuális gépen futó alkalmazások közötti interakciót, amelyek hivatkozások átadásával tudnak objektumokat megosztani. A hozzáférést objektumszinten osztják meg, ahol a hivatkozások csak a megfelelő metódusok hívásával érhetők el (a mutatók matematikája hiányzik). Bármilyen adat, beleértve a numerikus értékeket is, különálló objektumként kerül feldolgozásra.
Az alkalmazás számára a munka folyamatosnak tűnik, és nem függ az operációs rendszer újraindításától, a váratlan leállásoktól és a számítógép kikapcsolásától. A Phantom programozási modellje összehasonlítható egy soha nem leálló alkalmazások futtatásával egy objektum-orientált programozási nyelven. a szerver Az alkalmazások fejlesztésének egyik fő módja a Java nyelvű programok portálása a Phantom számára, amelyet a Phantom virtuális gép és a JVM hasonlósága támogat. A Java nyelv bytekód-compilerén kívül a projekt Python és C# nyelvű fordítók létrehozását, valamint egy WebAssembly között közvetítő fordító megvalósítását is tervezi.
A nagy teljesítményű műveletek, például videó- és hangfeldolgozás, végrehajtásához lehetőség van a natív kódú bináris objektumok külön szálakon való futtatására (a bináris objektumok összeállításához LLVM-t használnak). Az alacsony szintű kernel szolgáltatásokhoz való hozzáférés érdekében a VM egyes osztályait („belső” osztályok) az operációs rendszer kernel szintjén valósítják meg. Linux-alkalmazások futtatására POSIX interfész áll rendelkezésre, amely emulálja a Unix folyamatok működéséhez szükséges hívásokat (a POSIX interfészen futó alkalmazások esetében a perzisztencia jelenleg nem biztosított).

A hagyományos Phantom operációs rendszer a virtuális gépen kívül tartalmaz egy saját kernel-t, amely valósítja meg a szálakat, a memóriakezelőt, a szemétgyűjtőt, a szinkronizálási mechanizmusokat, az I/O rendszert és az eszközmeghajtókat, ami jelentősen megnehezíti a projekt széles körű alkalmazásra való felkészítését. Külön fejlesztik a hálózati verem, grafikai alrendszer és felhasználói felület komponenseit. Érdekesség, hogy a grafikai alrendszer és az ablakkezelő a kernel szintjén működik.
A projekt stabilitásának, hordozhatóságának és biztonságának növelésére megpróbálták átírni a Phantom virtuális gépet az open-source mikrokernel operációs rendszer, a Genode komponenseivel, amelyet a német Genode Labs vállalat irányít. Azok számára, akik kísérletezni szeretnének a Genode alapú Phantom-mal, külön építési környezetet készítettek Docker alapokon.
A Genode használata lehetővé teszi már bevált mikrokernel-ek és meghajtók felhasználását, valamint a meghajtók felhasználói térbe való áthelyezését (jelenlegi formájában a meghajtók C nyelven íródtak, és a Phantom kernel szintjén futnak). Lehetőség nyílik a matematikai verifikáción átesett seL4 mikrokernel használatára, amely igazolja, hogy a megvalósítás teljes mértékben megfelel a formális nyelven megadott specifikációknak. Az a gondolat is felmerült, hogy hasonló megbízhatósági bizonyítványt készítsenek a Phantom virtuális gépre is, ami lehetővé tenné az operációs rendszer környezetének teljes verifikálását.
A Genode-alapú port fő alkalmazási területeként az ipari és beágyazott eszközökre szánt alkalmazások fejlesztését nevezik meg. Jelenleg már elérhető egy módosítási készlet a virtuális gép számára, és működő kötegek kerültek létrehozásra a Genode fölött, amelyek biztosítják a mag komponenseinek és a fő alacsony szintű interfészeknek a perzisztenciáját. Megjegyzésre kerül, hogy virtuális gép A Phantom már működhet a 64 bites Genode környezetben, de még meg kell valósítani a VM működését perzisztenciában, át kell alakítani a meghajtó alrendszert, és alkalmazni kell a Genode-ra a hálózati verem és a grafikai alrendszer komponenseit.



Forrás: opennet.ru
