Dmitrij Zavalisjin berÀttade om ett projekt för att portera den virtuella maskinen frÄn operativsystemet Phantom för att fungera i miljön av mikrokÀrnasystemet Genode. I intervjun nÀmns att huvudsakliga versionen av Phantom redan Àr klar för pilotprojekt, och versionen baserad pÄ Genode kommer att fÀrdigstÀllas för anvÀndning i slutet av Äret. För nÀrvarande anges endast en fungerande konceptuell prototyp pÄ projektets webbplats, vars stabilitet och funktionalitet inte har nÄtt en nivÄ som Àr lÀmplig för industriell anvÀndning, och bland de nÀrmaste planerna nÀmns bildandet av en alfa-version, lÀmplig för experiment av externa utvecklare.
Projektets kod distribueras under LGPL-licensen, men den senaste Àndringen i det huvudsakliga repositoryt dateras till november 2019. Den offentliga aktiviteten relaterad till projektet Àr koncentrerad i repositoryt med en fork för Genode, som sedan december 2020 stöds av Anton Antonov, student vid universitetet Innopolis.
Operativsystemet Phantom har utvecklats som ett personligt projekt av Dmitrij Zavalisjin sedan början av 2000-talet, och sedan 2010 har det övergÄtt till företaget Digital Zone, grundat av Dmitrij. Systemet kÀnnetecknas av en inriktning pÄ hög tillförlitlighet och anvÀnder konceptet "allt Àr ett objekt" istÀllet för "allt Àr en fil", vilket gör det möjligt att klara sig utan filer genom att spara tillstÄndet i minnet och en kontinuerlig arbetscykel. Applikationer i Phantom avslutas inte, utan pausas och Äterupptar arbete frÄn den avbrutna punkten. Alla variabler och datatyper kan lagras sÄ lÀnge som applikationen behöver, utan att programmeraren behöver bekymra sig om datalagring.
Applikationer i Phantom kompileras till bytekod som körs i en stackmaskin som liknar Java Virtual Machine. Virtuella maskinen sĂ€kerstĂ€ller persistens av applikationernas minne â systemet skapar regelbundet ögonblicksbilder av tillstĂ„ndet i den virtuella maskinen och sparar dem pĂ„ en permanent lagringsenhet. Efter avstĂ€ngning eller en krasch kan arbetet fortsĂ€tta frĂ„n den senaste sparade minnesbilden. Ăgonblicksbilder skapas asynkront och utan att stoppa den virtuella maskinens arbete, men i ögonblicksbilden faststĂ€lls en ögonblicklig avbildning, som om den virtuella maskinen stoppades, sparades pĂ„ disk och startades igen.
Alla applikationer körs i ett gemensamt globalt adressutrymme, vilket möjliggör att undvika kontextbyten mellan kÀrnan och applikationerna, samt vÀsentligt förenklar och pÄskyndar interaktionen mellan applikationerna som körs i den virtuella maskinen, vilka kan utbyta objekt genom att överföra referenser. à tkomst separeras pÄ objektivÄ, och referenser kan endast erhÄllas genom att anropa motsvarande metoder (pekartiklar förekommer inte). Alla data, inklusive numeriska vÀrden, behandlas som separata objekt.
För applikationen verkar arbetet kontinuerligt och Àr oberoende av omstart av operativsystemet, krascher och avstÀngningar av datorn. Programmeringsmodellen för Phantom kan jÀmföras med körningen av applikationer för ett objektorienterat programmeringssprÄk som aldrig stÀngs av. servern En av de frÀmsta metoderna för att utveckla applikationer Àr porteringen av Java-applikationer för Phantom, vilket underlÀttas av likheterna mellan Phantom och JVM. Utöver bytekodkompilatorn för Java-sprÄket planeras utvecklingen av kompilatorer för Python och C#, samt implementeringen av en översÀttare frÄn mellanliggande kod till WebAssembly.
För att utföra operationer som krÀver hög prestanda, sÄsom videobearbetning och ljud, finns det möjlighet att köra separata trÄdar för binÀra objekt med inbyggd kod (LLVM anvÀnds för att kompilera binÀra objekt). För Ätkomst till lÄg nivÄ tjÀnster i kÀrnan Àr vissa klasser i VM ("interna" klasser) implementerade pÄ operativsystemets kÀrnnivÄ. För att köra Linux-applikationer finns det en POSIX-lager som emulerar anrop som behövs för att Unix-processer ska fungera (persistens för applikationer i POSIX-lager tillhandahÄlls för nÀrvarande inte).

Den traditionella operativsystemet Phantom inkluderar förutom en virtuell maskin Àven ett eget kÀrna med implementering av trÄdar, minneshanterare, skrÀpare, synkroniseringsmekanismer, in- och utgÄngssystem samt drivrutiner för att arbeta med hÄrdvara, vilket signifikant komplicerar att fÄ projektet klart för bred anvÀndning. Komponenter med nÀtverksstack, grafisk subsystem och anvÀndargrÀnssnitt utvecklas separat. Det Àr anmÀrkningsvÀrt att den grafiska subsystemet och fönsterhanteraren fungerar pÄ kÀrnnivÄ.
För att öka stabiliteten, portabiliteten och sÀkerheten av projektet har ett försök gjorts att överföra den virtuella maskinen Phantom för att arbeta med öppna mikrokerner och komponenter frÄn det operativsystemet Genode, som utvecklas av det tyska företaget Genode Labs. För dem som vill experimentera med Phantom baserat pÄ Genode har en speciell byggmiljö förberetts baserat pÄ Docker.
AnvÀndningen av Genode kommer att möjlighet att anvÀnda redan beprövade mikrokerner och drivrutiner, samt flytta drivrutiner till anvÀndarutrymmet (för nÀrvarande Àr drivrutiner skrivna i C och körs pÄ kÀrnnivÄ i Phantom). Det kommer ocksÄ att bli möjligt att anvÀnda mikrokerner seL4, som har genomgÄtt matematisk verifiering av tillförlitlighet, vilket bekrÀftar att implementationen helt överensstÀmmer med specifikationerna som bestÀmts pÄ ett formellt sprÄk. Möjligheten att förbereda en liknande verifiering av tillförlitlighet för den virtuella maskinen Phantom övervÀgs, vilket skulle möjliggöra verifiering av hela operativsystemsmiljön.
Den huvudsakliga anvÀndningsomrÄdet för porten baserad pÄ Genode Àr att utveckla applikationer för olika industriella och inbÀddade enheter. För nÀrvarande har ett antal förÀndringar för virtuell maskin förberetts och fungerande grÀnssnitt pÄ Genode har lagts till för att sÀkerstÀlla persistens av kÀrnkomponenter och grundlÀggande lÄgnivÄgrÀnssnitt. Det noteras att virtuell maskin Phantom kan redan arbeta i en 64-bitarsmiljö för Genode, men det ÄterstÄr att implementera VM:s funktion i persistenslÀge, omarbeta drivrutinsunder-systemet och anpassa komponenterna med nÀtverksstack och grafiskt subsystem för Genode.



KĂ€lla: opennet.ru
