Dmitri Zavalishin rääkis Phantom operatsioonisüsteemi virtuaalmasina portimise projektist, et seda saaks kasutada mikrokerneleid kasutavas OS Genode keskkonnas. Intervjuus märgitakse, et Phantom peamine versioon on juba valmis pilootprojektide jaoks ning Genode põhine versioon jõuab kasutusvalmidusse aasta lõpuks. Praegu on projekti veebilehelt saadaval vaid töötav kontseptuaalne prototüüp, mille stabiilsus ja funktsionaalsus ei ole tööstuslikuks kasutamiseks valmis, ning lähituleviku plaanides mainitakse kolmandate osapoolte arendajate eksperimentide jaoks sobiva alfa-versiooni loomist.
Projekti kood levitatakse LGPL litsentsi alusel, kuid viimase muudatuse kuupäev põhirepositoariumis on novembri 2019. aasta. Projektiga seotud avalik tegevus on koondunud Genode forki repole, mida toetas alates 2020. aasta detsembrist Anton Antonov, Innopolis ülikooli üliõpilane.
Operatsioonisüsteem Phantom on alates 2000. aastate algusest arenenud Dmitri Zavalishini isikliku projektina ning alates 2010. aastast on see üle viidud Digital Zone'i ettevõtte alla, mille asutas Dmitri. Süsteem on tähelepanuväärne oma kõrge usaldusväärsuse ja "kõik on objekt" kontseptsiooni kasutamise poolest, mis võimaldab vältida failide kasutamist, salvestades mäluseisundit ja pideva töötsükli. Phantomis ei lõpetata rakendusi, vaid need lihtsalt peatatakse ja jätkatakse katkenud kohast. Kõiki muutujaid ja andmestruktuure saab hoida nii kaua, kui rakendus vajab, samas ei pea arendaja muretsema andmete salvestamise pärast.
Phantom'i rakendused kompileeritakse byte-koodiks, mis töötab virna virtuaalmasinas, mis meenutab Java virtuaalmasinat. Virtuaalmasin tagab rakenduste mälu püsivuse — süsteem salvestab perioodiliselt virtuaalmasina olekusnapshotid püsivale mälule. Pärast väljalülitamist või ootamatut sulgemist saab tööd jätkata viimase salvestatud mälusnapshoti pealt. Snapshootid luuakse asünkroonselt ja ilma virtuaalmasina töö peatamiseta, kuid snapshootis fikseeritakse ühekordne lõikepunkt, nagu oleks virtuaalmasin peatatud, salvestatud kettale ja uuesti käivitatud.
Kõik rakendused töötavad ühises globaalsetes aadressiruumides, mis võimaldavad vältida konteksti vahetamist tuuma ja rakenduste vahel ning oluliselt lihtsustavad ja kiirendavad interaktsiooni virtuaalmasinas töötavate rakenduste vahel, mis võivad vahetada objekte viidete edastamise kaudu. Juurdepääsu jagamine toimub objektide tasemel, mille viidatud saamiseks tuleb kutsuda vastavaid meetodeid (näiteks pole näidikute aritmeetikast). Iga andmeid, sealhulgas numbrilisi väärtusi, töödeldakse eraldi objektidena.
Rakenduse jaoks tundub töö katkematu ja see ei sõltu operatsioonisüsteemi taaskäivitamistest, ootamatutest sulgemistest ja arvuti väljalülitamisest. Phantom'i programmeerimismudelit võrreldakse rakendusega, mis kunagi ei seisku. serverilt objektkeele programmeerimise rakendustest. Ühe peamise rakenduse arendamise viisina peetakse Java keeles kirjutatud programmide porteerimist Phantom'i jaoks, kuna Phantom'i virtuaalmasin on sarnane JVM-iga. Lisaks Java keele byte-koodikomplektorile on projektis plaanis luua ka Python ja C# kompilaatorid ning elluviimine WebAssembly vahenduskoodist.
Ainult kõrge jõudluse nõudvate operatsioonide, näiteks video ja heli töötlemise, jaoks on võimalik käivitada eraldi voogudes binaarseid objekte, mis sisaldavad kohandatud koodi (binaarsete objektide koostamiseks kasutatakse LLVM-i). Madalatasemelistesse südameteenustesse pääsemiseks on osa VM-i klasse ("sise" klassid) rakendatud operatsioonisüsteemi tasandil. Linuxi rakenduste käivitamiseks on ette nähtud POSIX-kiht, mis emuleerib kõik kutsed, mis on vajalikud Unix-protsesside tööks (POSIX-kihi rakenduste püsivust ei ole veel tagatud).

Traditsiooniline operatsioonisüsteem Phantom sisaldab lisaks virtuaalsele masinale ka oma südant, millel on rakendused voogude jaoks, mäluhaldur, prügikoristaja, sünkroniseerimismehhanismid, sisendi-/väljundi süsteem ja seadme draiverid, mis oluliselt raskendab projekti viimist täielikule kasutusele. Eraldi arendatakse komponente, millel on võrgustiku kiht, graafiline alamsüsteem ja kasutajaliides. Tasub märkida, et graafiline alamsüsteem ja aknahaldur töötavad südametasandil.
Projektis stabiilsuse, ülekantavuse ja turvalisuse tõstmiseks on tehtud katse viia Phantom virtuaalne masin Genode avatud mikrokernel-operatsioonisüsteemi komponentidega tööle, mille arendust juhib Saksamaa ettevõte Genode Labs. Need, kes soovivad eksperimentida Phantomi versiooniga, mis põhineb Genodel, saavad kasutada spetsiaalset Docker'i ehituskeskkonda.
Genode kasutamine võimaldab kasutada juba testitud mikrokerne ja draivereid ning viia draiverid kasutaja ruumi (praegu on draiverid kirjutatud C-s ja töötavad Phantom südame tasandil). Samuti avatakse võimalus kasutada matemaatiliselt kinnitatud usaldusväärsusega mikrokerne seL4, mis tõendab, et rakendus vastab täielikult spetsifikatsioonidest, mis on määratud formaalses keeles. Samuti kaalutakse sarnase usaldusväärsuse tõestuse valmistamise võimalust ka Phantom virtuaalse masina jaoks, mis võimaldab valideerida kogu operatsioonisüsteemi keskkonda.
Genode põhiväli on rakenduste arendamine erinevatele tööstuslikele ja sisse ehitatud seadmetele. Praeguseks on koostatud komplekt muudatusi virtuaalmasinale ning lisatud toimivad Genode peal olevad sidurid, mis tagavad tuumakomponentide ja oluliste madala taseme liideste püsivuse. Tähistatakse, et virtuiaalmasin Phantom suudab juba töötada 64-bitises Genode keskkonnas, kuid vajalik on veel ellu viia VM töö persemistentsusrežiimis, ümber töötada draiverite alamsüsteem ning kohandada Genode jaoks komponente, mis sisaldavad võrgu koost ja graafikakoodeksit.



Allikas: opennet.ru
