Dmitrijs ZavaļiÅ”ins stÄstÄ«ja par projektu Phantom operÄtÄjsistÄmas virtuÄlÄs maŔīnas pÄrneÅ”anai darbam Genode mikrokodolu OS vidÄ. IntervijÄ atzÄ«mÄts, ka Phantom galvenÄ versija jau ir gatava pilotprojektiem, un uz Genode balstÄ«tÄ versija tiks sagatavota lietoÅ”anai gada beigÄs. TajÄ paÅ”Ä laikÄ projekta mÄjaslapÄ pagaidÄm ir izziÅots tikai funkcionÄjoÅ”s konceptuÄlais prototips, kura stabilitÄte un funkcionalitÄte nav nogÄdÄta rÅ«pnieciskai lietoÅ”anai piemÄrotÄ lÄ«menÄ« un starp tuvÄkajiem plÄniem ir alfa versijas veidoÅ”ana. piemÄrots treÅ”o puÅ”u izstrÄdÄtÄju eksperimentiem.
Projekta kods tiek izplatÄ«ts ar LGPL licenci, bet pÄdÄjÄs izmaiÅas galvenajÄ repozitorijÄ ir datÄtas ar 2019. gada novembri. Ar projektu saistÄ«tÄ sabiedriskÄ darbÄ«ba koncentrÄta krÄtuvÄ ar dakÅ”iÅu Genodei, kuru kopÅ” 2020. gada decembra uztur Innopolis UniversitÄtes students Antons Antonovs.
KopÅ” 2000. gadu sÄkuma Phantom operÄtÄjsistÄma tika izstrÄdÄta kÄ Dmitrija ZavaļiÅ”ina personÄ«gais projekts, un kopÅ” 2010. gada tÄ tika nodota Dmitrija izveidotÄ uzÅÄmuma Digital Zone paspÄrnÄ. SistÄma ir ievÄrojama ar savu fokusu uz augstu uzticamÄ«bu un jÄdziena "viss ir objekts" izmantoÅ”anu, nevis "viss ir fails", kas novÄrÅ” failu izmantoÅ”anu atmiÅas stÄvokļa saglabÄÅ”anas un nepÄrtraukta cikla dÄļ. strÄdÄt. Lietojumprogrammas Phantom netiek pÄrtrauktas, bet tikai apturÄtas un atsÄktas no vietas, kur tÄs tika pÄrtrauktas. Visus mainÄ«gos un datu struktÅ«ras var glabÄt tik ilgi, cik lietojumprogrammai nepiecieÅ”ams, un programmÄtÄjam nav Ä«paÅ”i jÄrÅ«pÄjas par datu saglabÄÅ”anu.
Programmas Phantom lietojumprogrammas tiek apkopotas baitkodÄ, kas darbojas uz steku balstÄ«tÄ virtuÄlajÄ maŔīnÄ, lÄ«dzÄ«gi kÄ Java virtuÄlajai maŔīnai. VirtuÄlÄ maŔīna nodroÅ”ina lietojumprogrammu atmiÅas noturÄ«bu ā sistÄma periodiski izskalo virtuÄlÄs maŔīnas stÄvokļa momentuzÅÄmumus pastÄvÄ«gÄ datu nesÄjÄ. PÄc izslÄgÅ”anas vai avÄrijas darbu var turpinÄt, sÄkot no pÄdÄjÄ saglabÄtÄ atmiÅas momentuzÅÄmuma. MomentuzÅÄmumi tiek izveidoti asinhroni un bez virtuÄlÄs maŔīnas darbÄ«bas apturÄÅ”anas, bet momentuzÅÄmums tver vienreizÄju daļu, it kÄ virtuÄlÄ maŔīna tiktu apturÄta, saglabÄta diskÄ un sÄkta no jauna.
Visas lietojumprogrammas darbojas kopÄjÄ globÄlajÄ adreÅ”u telpÄ, kas novÄrÅ” nepiecieÅ”amÄ«bu pÄc konteksta pÄrslÄgÅ”anas starp kodolu un lietojumprogrammÄm, kÄ arÄ« ievÄrojami vienkÄrÅ”o un paÄtrina saziÅu starp lietojumprogrammÄm, kas darbojas virtuÄlajÄ maŔīnÄ, kas var apmainÄ«ties ar objektiem, izmantojot atsauces nodoÅ”anu. Piekļuves atdalÄ«Å”ana tiek veikta objektu lÄ«menÄ«, uz kuriem atsauces var iegÅ«t, tikai izsaucot atbilstoÅ”Äs metodes (nav rÄdÄ«tÄja aritmÄtikas). Jebkuri dati, tostarp skaitliskÄs vÄrtÄ«bas, tiek uzskatÄ«ti par atseviŔķiem objektiem.
Lietojumprogrammai darbs izskatÄs nepÄrtraukts un nav atkarÄ«gs no OS atsÄknÄÅ”anas, avÄrijÄm un datora izslÄgÅ”anas. Phantom programmÄÅ”anas modelis tiek salÄ«dzinÄts ar nepÄrtrauktu lietojumprogrammu servera darbÄ«bu objektu programmÄÅ”anas valodai. Java programmu pÄrneÅ”ana priekÅ” Phantom tiek uzskatÄ«ta par vienu no galvenajiem lietojumprogrammu izstrÄdes veidiem, ko veicina Phantom virtuÄlÄs maŔīnas lÄ«dzÄ«ba ar JVM. Papildus Java valodas baitkoda kompilatoram projektÄ plÄnots izveidot kompilatorus Python un C#, kÄ arÄ« ieviest tulkotÄju no WebAssembly starpkoda.
Lai veiktu darbÄ«bas, kurÄm nepiecieÅ”ama augsta veiktspÄja, piemÄram, video un audio apstrÄdi, ir iespÄjams palaist binÄros objektus ar vietÄjo kodu atseviŔķos pavedienos (binÄro objektu veidoÅ”anai izmanto LLVM). Lai piekļūtu zema lÄ«meÅa kodola pakalpojumiem, dažas VM klases (āiekÅ”ÄjÄsā klases) ir ieviestas OS kodola lÄ«menÄ«. Lai palaistu Linux lietojumprogrammas, tiek nodroÅ”inÄts POSIX slÄnis, kas emulÄ Unix procesu darbÄ«bai nepiecieÅ”amos izsaukumus (noturÄ«ba lietojumprogrammÄm POSIX slÄnÄ« vÄl nav nodroÅ”inÄta).
TradicionÄlajÄ Phantom OS papildus virtuÄlajai maŔīnai ir savs kodols ar pavedienu ievieÅ”anu, atmiÅas pÄrvaldnieks, atkritumu savÄcÄjs, sinhronizÄcijas mehÄnismi, I / O sistÄma un draiveri darbam ar aprÄ«kojumu, kas ievÄrojami apgrÅ«tina ievieÅ”anu. projekts ir gatavs plaÅ”ai lietoÅ”anai. AtseviŔķi tiek izstrÄdÄti komponenti ar tÄ«kla steku, grafisko apakÅ”sistÄmu un lietotÄja interfeisu. JÄatzÄ«mÄ, ka grafikas apakÅ”sistÄma un logu pÄrvaldnieks darbojas kodola lÄ«menÄ«.
Lai uzlabotu projekta stabilitÄti, pÄrnesamÄ«bu un droŔību, tika mÄÄ£inÄts Phantom virtuÄlo maŔīnu nodot darbÄ, izmantojot atvÄrtÄs mikrokodolu operÄtÄjsistÄmas Genode komponentus, kuru izstrÄdi uzrauga VÄcijas kompÄnija Genode Labs. Tiem, kas vÄlas eksperimentÄt ar Phantom, kura pamatÄ ir Genode, ir sagatavota Ä«paÅ”a bÅ«vÄÅ”anas vide, kuras pamatÄ ir Docker.
Izmantojot Genode, bÅ«s iespÄjams izmantot jau pÄrbaudÄ«tus mikrokodolus un draiverus, kÄ arÄ« ievest draiverus lietotÄja telpÄ (paÅ”reizÄjÄ formÄ draiveri ir rakstÄ«ti C un darbojas Phantom kodola lÄ«menÄ«). Jo Ä«paÅ”i bÅ«s iespÄjams izmantot seL4 mikrokodolu, kas ir izgÄjis matemÄtisko uzticamÄ«bas pÄrbaudi, apliecinot, ka ievieÅ”ana pilnÄ«bÄ atbilst oficiÄlajÄ valodÄ norÄdÄ«tajÄm specifikÄcijÄm. Tiek apsvÄrta iespÄja sagatavot lÄ«dzÄ«gu Phantom virtuÄlÄs maŔīnas uzticamÄ«bas apliecinÄjumu, kas ļaus pÄrbaudÄ«t visu OS vidi.
Genode balstÄ«tÄ porta galvenÄ pielietojuma joma ir lietojumprogrammu izstrÄde dažÄdÄm rÅ«pnieciskajÄm un iegultajÄm ierÄ«cÄm. Å obrÄ«d jau ir sagatavots izmaiÅu kopums virtuÄlajai maŔīnai un ir pievienoti saitÄ«jumi, kas darbojas virs Genode kodola noturÄ«bas komponentiem un galvenajÄm zemÄ lÄ«meÅa saskarnÄm. Tiek atzÄ«mÄts, ka Phantom virtuÄlÄ maŔīna jau var darboties 64 bitu Genode vidÄ, taÄu VM vÄl ir jÄievieÅ” noturÄ«bas režīmÄ, jÄpÄrstrÄdÄ draiveru apakÅ”sistÄma, kÄ arÄ« komponentiem ar tÄ«kla steku un grafikas apakÅ”sistÄmu. jÄpielÄgo Genodei.
Avots: opennet.ru