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

Dmitry Zavalishin ha parlato del progetto per il porting di una macchina virtuale del sistema operativo Phantom affinché funzioni nell'ambiente del sistema operativo microkernel Genode. Dall'intervista si rileva che la versione principale di Phantom è già pronta per i progetti pilota, mentre la versione basata su Genode sarà pronta per l'uso alla fine dell'anno. Allo stesso tempo, sul sito web del progetto è stato annunciato solo un prototipo concettuale realizzabile, la cui stabilità e funzionalità non sono state portate a un livello adatto all'uso industriale, e tra i piani immediati c'è la formazione di una versione alfa adatta agli esperimenti da sviluppatori di terze parti è menzionato.

Il codice del progetto è distribuito sotto licenza LGPL, ma l'ultima modifica nel repository principale è datata novembre 2019. L'attività pubblica relativa al progetto è concentrata in un repository con un fork per Genode, gestito da dicembre 2020 da Anton Antonov, uno studente dell'Università di Innopolis.

Dall'inizio degli anni 2000, il sistema operativo Phantom si è sviluppato come progetto personale di Dmitry Zavalishin e dal 2010 è stato trasferito sotto l'ala protettrice della società Digital Zone creata da Dmitry. Il sistema si distingue per la sua attenzione all'alta affidabilità e per l'uso del concetto "tutto è un oggetto" invece di "tutto è un file", che consente di fare a meno dell'uso dei file grazie alla conservazione dello stato della memoria e un ciclo continuo di lavoro. Le applicazioni in Phantom non vengono terminate, ma vengono solo sospese e riprese dal punto interrotto. Tutte le variabili e le strutture dati possono essere memorizzate per tutto il tempo necessario all'applicazione e il programmatore non deve preoccuparsi specificamente del salvataggio dei dati.

Le applicazioni in Phantom sono compilate in bytecode, che viene eseguito in una macchina virtuale basata su stack, simile alla macchina virtuale Java. La macchina virtuale garantisce la persistenza della memoria dell'applicazione: il sistema ripristina periodicamente le istantanee dello stato della macchina virtuale su un supporto permanente. Dopo un arresto o un arresto anomalo del sistema, il lavoro può continuare a partire dall'ultima istantanea della memoria salvata. Gli snapshot vengono creati in modalità asincrona e senza sospendere il funzionamento della macchina virtuale, ma nello snapshot viene registrata una porzione una tantum, come se la macchina virtuale fosse stata arrestata, salvata su disco e riavviata.

Tutte le applicazioni vengono eseguite in uno spazio di indirizzi globale comune, che elimina la necessità di cambi di contesto tra il kernel e le applicazioni e inoltre semplifica e accelera significativamente l'interazione tra le applicazioni in esecuzione nella macchina virtuale, che può scambiare oggetti tramite passaggio di riferimenti. La separazione degli accessi avviene a livello degli oggetti, i cui riferimenti possono essere ottenuti solo richiamando i metodi appropriati (non esiste l'aritmetica dei puntatori). Tutti i dati, inclusi i valori numerici, vengono elaborati come oggetti separati.

Per l'applicazione, il lavoro sembra essere continuo e non dipende da riavvii del sistema operativo, arresti anomali e arresti del computer. Il modello di programmazione per Phantom è paragonato all'esecuzione di un server applicativo ininterrotto per un linguaggio di programmazione a oggetti. Il porting dei programmi Java su Phantom è considerato uno dei principali metodi di sviluppo di applicazioni, facilitato dalla somiglianza della macchina virtuale Phantom con la JVM. Oltre al compilatore bytecode per il linguaggio Java, il progetto prevede di creare compilatori per Python e C#, nonché di implementare un traduttore dal codice intermedio WebAssembly.

Per eseguire operazioni che richiedono prestazioni elevate, come l'elaborazione video e audio, è possibile eseguire oggetti binari con codice nativo in thread separati (LLVM viene utilizzato per assemblare oggetti binari). Per accedere ai servizi del kernel di basso livello, alcune classi VM (classi “interne”) sono implementate a livello del kernel del sistema operativo. Per eseguire le applicazioni Linux, viene fornito un livello POSIX che emula le chiamate necessarie per il funzionamento dei processi Unix (la persistenza per le applicazioni nel livello POSIX non è ancora fornita).

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

Il tradizionale sistema operativo Phantom, oltre alla macchina virtuale, include un proprio kernel con l'implementazione di thread, un gestore di memoria, un garbage collector, meccanismi di sincronizzazione, un sistema di input/output e driver per lavorare con l'hardware, il che complica notevolmente la realizzazione del progetto alla disponibilità per un uso diffuso. Separatamente vengono sviluppati componenti con uno stack di rete, un sottosistema grafico e un'interfaccia utente. È interessante notare che il sottosistema grafico e il gestore delle finestre funzionano a livello del kernel.

Per aumentare la stabilità, la portabilità e la sicurezza del progetto, si è tentato di far funzionare la macchina virtuale Phantom utilizzando componenti del sistema operativo microkernel aperto Genode, il cui sviluppo è supervisionato dalla società tedesca Genode Labs. Per coloro che desiderano sperimentare Phantom basato su Genode, è stato preparato uno speciale ambiente di compilazione basato su Docker.

L'utilizzo di Genode consentirà di utilizzare microkernel e driver già collaudati, nonché di spostare i driver nello spazio utente (nella loro forma attuale, i driver sono scritti in C ed eseguiti a livello del kernel Phantom). In particolare, sarà possibile utilizzare il microkernel seL4, che è stato sottoposto a verifica matematica di affidabilità, confermando che l'implementazione rispetta pienamente le specifiche specificate nel linguaggio formale. Si sta valutando la possibilità di predisporre un'analoga prova di affidabilità per la macchina virtuale Phantom, che consentirà di verificare l'intero ambiente del sistema operativo.

La principale area di applicazione del port basato su Genode è lo sviluppo di applicazioni per vari dispositivi industriali e embedded. Attualmente è già stata preparata una serie di modifiche per la macchina virtuale e sono stati aggiunti dei collegamenti che funzionano su Genode per garantire la persistenza dei componenti del kernel e delle principali interfacce di basso livello. Si noti che la macchina virtuale Phantom può già funzionare nell'ambiente Genode a 64 bit, ma è ancora necessario implementare la VM in modalità persistenza, rielaborare il sottosistema driver e adattare i componenti con uno stack di rete e un sottosistema grafico per Genode.

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

Aggiungi un commento