Il prototipo del sistema operativo domestico Phantom basato su Genode sarà pronto entro la fine dell'anno

Dmitri Zavalyshin ha parlato del progetto di porting della macchina virtuale del sistema operativo Phantom per funzionare nell'ambiente del sistema operativo microkernel Genode. Nell'intervista si sottolinea che la versione principale di Phantom è già pronta per progetti pilota, mentre la versione basata su Genode sarà completata per l'uso a fine anno. Tuttavia, sul sito del progetto è attualmente disponibile solo un prototipo concettuale funzionante, la stabilità e la funzionalità del quale non sono state elevate a livelli adatti per un uso industriale; tra i prossimi piani viene menzionata la creazione di una versione alfa adatta per esperimenti da parte di sviluppatori terzi.

Il codice del progetto è distribuito sotto licenza LGPL, ma l'ultimo aggiornamento nel repository principale è datato novembre 2019. L'attività pubblica legata al progetto è concentrata in un repository fork per Genode, che dal dicembre 2020 è sostenuto da Anton Antonov, uno studente dell'università di Innopolis.

Il sistema operativo Phantom, sviluppato come progetto personale da Dmitrij Zavalishin all'inizio degli anni 2000, è stato trasferito sotto l'ala dell'azienda Digital Zone, fondata da Dmitrij, a partire dal 2010. Il sistema si distingue per l'attenzione rivolta all'affidabilità e utilizza il concetto di 'tutto è oggetto' invece di 'tutto è file', permettendo di evitare l'uso di file attraverso la conservazione dello stato della memoria e un ciclo di lavoro continuo. Le applicazioni in Phantom non si chiudono, ma vengono semplicemente sospese e riavviate dal punto in cui erano state interrotte. Tutte le variabili e le strutture dati possono essere conservate per tutto il tempo necessario all'applicazione, senza che il programmatore debba preoccuparsi del salvataggio dei dati.

Le applicazioni in Phantom vengono compilate in bytecode, che viene eseguito in una macchina virtuale a stack, simile alla macchina virtuale Java. La macchina virtuale garantisce la persistenza della memoria delle applicazioni: il sistema salva periodicamente istantanee dello stato della macchina virtuale su un supporto permanente. Dopo lo spegnimento o una terminazione anomala, è possibile riprendere il lavoro a partire dall'ultimo snapshot della memoria salvato. Le istantanee vengono create in modalità asincrona e senza sospendere l'operatività della macchina virtuale, ma nell'istantanea viene registrato uno stato esatto, come se la macchina virtuale fosse stata fermata, salvata su disco e nuovamente avviata.

Tutte le applicazioni vengono eseguite in uno spazio globale di indirizzi, che consente di evitare i cambi di contesto tra il kernel e le applicazioni, facilitando e accelerando notevolmente l'interazione tra le applicazioni in esecuzione nella macchina virtuale, le quali possono scambiare oggetti tramite il passaggio di riferimenti. L'accesso è separato a livello di oggetti, i cui riferimenti possono essere ottenuti solo attraverso la chiamata ai metodi adeguati (l'aritmetica dei puntatori è assente). Qualsiasi dato, inclusi i valori numerici, è trattato come oggetti separati.

Per l'applicazione, il lavoro appare continuo e non dipende dai riavvii del sistema operativo, dalle chiusure anomale e dall'accensione e spegnimento del computer. Il modello di programmazione per Phantom è paragonato a un'esecuzione che non si ferma mai. server applicazioni per linguaggi di programmazione orientati agli oggetti. Tra i principali metodi di sviluppo delle applicazioni, si considera il porting di programmi per Phantom in linguaggio Java, facilitato dalla somiglianza della macchina virtuale Phantom con la JVM. Oltre al compilatore di bytecode per il linguaggio Java, il progetto prevede la creazione di compilatori per Python e C#, nonché l'implementazione di un traduttore da codice intermedio a WebAssembly.

Per eseguire operazioni che richiedono elevate prestazioni, come l'elaborazione di video e audio, è prevista la possibilità di avviare in thread separati oggetti binari con codice nativo (per la creazione di oggetti binari si utilizza LLVM). Per accedere ai servizi a basso livello del kernel, parte delle classi VM (le "classi interne") è implementata a livello del kernel OS. Per l'esecuzione di applicazioni Linux è prevista una sovrastruttura POSIX che emula le chiamate necessarie per il funzionamento dei processi Unix (la persistenza delle applicazioni nella sovrastruttura POSIX non è ancora garantita).

Il prototipo del sistema operativo domestico Phantom basato su Genode sarà pronto entro la fine dell'anno

Il sistema operativo tradizionale Phantom, oltre alla macchina virtuale, include un proprio kernel con implementazione dei thread, gestore della memoria, garbage collector, meccanismi di sincronizzazione, sistema di input/output e driver per l'hardware, il che complica notevolmente la preparazione del progetto per un utilizzo diffuso. Componenti con stack di rete, sottosistema grafico e interfaccia utente sono sviluppati separatamente. È interessante notare che il sottosistema grafico e il gestore delle finestre operano a livello di kernel.

Per migliorare la stabilità, la portabilità e la sicurezza del progetto, è stato tentato il porting della macchina virtuale Phantom per funzionare utilizzando i componenti del sistema operativo microkernel open-source Genode, il cui sviluppo è supervisionato dalla società tedesca Genode Labs. È stato preparato un ambiente di build speciale basato su Docker per coloro che desiderano sperimentare con Phantom su Genode.

L'uso di Genode permetterà di sfruttare microkernel e driver già collaudati, oltre a spostare i driver nello spazio utente (nella forma attuale i driver sono scritti in C e vengono eseguiti a livello di kernel Phantom). Sarà possibile utilizzare il microkernel seL4, che ha subito una verifica matematica della sua affidabilità, confermando che l'implementazione corrisponde completamente alle specifiche definite in un linguaggio formale. Si sta considerando la possibilità di preparare una prova di affidabilità simile anche per la macchina virtuale Phantom, permettendo così di ottenere la verifica di tutto l'ambiente operativo.

Il principale campo di applicazione del porting basato su Genode è lo sviluppo di applicazioni per vari dispositivi industriali e embedded. È già stato preparato un insieme di modifiche per la macchina virtuale e sono stati aggiunti wrapper funzionanti sopra Genode per garantire la persistenza dei componenti del kernel e delle principali interfacce di basso livello. Si fa notare che la macchina virtuale Phantom può già funzionare in un ambiente a 64 bit Genode, ma rimane ancora da implementare il funzionamento della VM in modalità persistenza, rivedere il sottosistema delle interfacce e adattare per Genode i componenti con stack di rete e sottosistema grafico.

Il prototipo del sistema operativo domestico Phantom basato su Genode sarà pronto entro la fine dell'anno
Il prototipo del sistema operativo domestico Phantom basato su Genode sarà pronto entro la fine dell'anno
Il prototipo del sistema operativo domestico Phantom basato su Genode sarà pronto entro la fine dell'anno


Fonte: opennet.ru
Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster