Dmitry Zavalishin a parlĂ© du projet de portage de la machine virtuelle du systĂšme d'exploitation Phantom pour fonctionner dans l'environnement du systĂšme d'exploitation micro-noyau Genode. L'entretien souligne que la version principale de Phantom est dĂ©jĂ prĂȘte pour des projets pilotes, tandis que la version basĂ©e sur Genode sera prĂȘte Ă ĂȘtre utilisĂ©e d'ici la fin de l'annĂ©e. Ă ce stade, le site du projet ne prĂ©sente qu'un prototype conceptuel fonctionnel, dont la stabilitĂ© et la fonctionnalitĂ© ne sont pas encore suffisantes pour un usage industriel, et parmi les plans Ă court terme, il est mentionnĂ© de dĂ©velopper une version alpha adaptĂ©e aux expĂ©rimentations par des dĂ©veloppeurs tiers.
Le code du projet est distribué sous licence LGPL, mais le dernier changement dans le dépÎt principal remonte à novembre 2019. L'activité publique liée au projet est concentrée dans le dépÎt d'un fork pour Genode, qui est maintenu depuis décembre 2020 par Anton Antonov, étudiant de l'université d'Innopolis.
Le systĂšme d'exploitation Phantom s'est dĂ©veloppĂ© depuis le dĂ©but des annĂ©es 2000 comme un projet personnel de Dmitry Zavalishin, et depuis 2010, il est passĂ© sous l'Ă©gide de la sociĂ©tĂ© Digital Zone, fondĂ©e par Dmitry. Ce systĂšme se distingue par son orientation vers une fiabilitĂ© Ă©levĂ©e et l'utilisation du concept « tout est objet » au lieu de « tout est fichier », permettant de se passer de fichiers grĂące Ă la conservation de l'Ă©tat de la mĂ©moire et Ă un cycle de fonctionnement continu. Les applications dans Phantom ne se terminent pas, mais sont simplement suspendues et reprennent leur travail au point oĂč elles s'Ă©taient arrĂȘtĂ©es. Toutes les variables et structures de donnĂ©es peuvent ĂȘtre stockĂ©es aussi longtemps que nĂ©cessaire pour l'application, sans que le programmeur ait Ă se soucier de la sauvegarde des donnĂ©es.
Les applications dans Phantom sont compilĂ©es en bytecode, qui est exĂ©cutĂ© dans une machine virtuelle de pile, similaire Ă la machine virtuelle Java. La machine virtuelle assure la persistance de la mĂ©moire des applications : le systĂšme effectue pĂ©riodiquement des captures d'Ă©tat de la machine virtuelle sur un support permanent. AprĂšs un arrĂȘt ou un crash, le travail peut reprendre Ă partir de la derniĂšre capture sauvegardĂ©e. Ces captures sont créées en mode asynchrone et sans interrompre le fonctionnement de la machine virtuelle, mais dans le snapshot, un instantanĂ© est enregistrĂ©, comme si la machine virtuelle avait Ă©tĂ© arrĂȘtĂ©e, sauvegardĂ©e sur disque puis redĂ©marrĂ©e.
Toutes les applications s'exĂ©cutent dans un espace d'adresses global commun, ce qui permet d'Ă©viter les changements de contexte entre le noyau et les applications, et simplifie et accĂ©lĂšre considĂ©rablement les interactions entre les applications exĂ©cutĂ©es dans la machine virtuelle, qui peuvent Ă©changer des objets par le biais de la transmission de rĂ©fĂ©rences. La sĂ©paration des accĂšs est effectuĂ©e au niveau des objets, dont les rĂ©fĂ©rences ne peuvent ĂȘtre obtenues que par l'appel de mĂ©thodes appropriĂ©es (l'arithmĂ©tique des pointeurs est absente). Toutes les donnĂ©es, y compris les valeurs numĂ©riques, sont traitĂ©es comme des objets distincts.
Pour l'application, le travail semble continu et n'est pas affectĂ© par les redĂ©marrages du systĂšme d'exploitation, les arrĂȘts d'urgence et les coupures d'alimentation. Le modĂšle de programmation pour Phantom est comparĂ© Ă l'exĂ©cution d'applications qui ne s'arrĂȘtent jamais. de serveurs Pour le langage de programmation objet. L'une des principales mĂ©thodes de dĂ©veloppement d'applications est le portage pour Phantom de programmes Ă©crits en Java, ce qui est facilitĂ© par la similitude de la machine virtuelle Phantom avec la JVM. En plus du compilateur de bytecode pour le langage Java, le projet prĂ©voit la crĂ©ation de compilateurs pour Python et C#, ainsi que la mise en Ćuvre d'un traducteur de code intermĂ©diaire WebAssembly.
Pour effectuer des opérations nécessitant une grande performance, telles que le traitement de la vidéo et de l'audio, il est possible de lancer des objets binaires avec du code natif dans des threads séparés (LLVM est utilisé pour compiler les objets binaires). Pour accéder aux services bas niveau du noyau, certaines classes VM (les « classes internes ») sont implementées au niveau du noyau du systÚme d'exploitation. Une couche POSIX est prévue pour exécuter des applications Linux, émule les appels nécessaires au fonctionnement des processus Unix (la persistance pour les applications dans la couche POSIX n'est pas encore assurée).

Le systĂšme d'exploitation traditionnel Phantom, en plus de la machine virtuelle, inclut son propre noyau avec une implĂ©mentation des threads, un gestionnaire de mĂ©moire, un ramasse-miettes, des mĂ©canismes de synchronisation, un systĂšme d'entrĂ©e/sortie et des pilotes pour interagir avec le matĂ©riel, ce qui complique considĂ©rablement la prĂ©paration du projet pour une utilisation gĂ©nĂ©ralisĂ©e. Des composants avec une pile rĂ©seau, un sous-systĂšme graphique et une interface utilisateur sont dĂ©veloppĂ©s sĂ©parĂ©ment. Il est remarquable que le sous-systĂšme graphique et le gestionnaire de fenĂȘtres fonctionnent au niveau du noyau.
Pour améliorer la stabilité, la portabilité et la sécurité du projet, une tentative de portage de la machine virtuelle Phantom pour fonctionner avec les composants du systÚme d'exploitation micro-noyau open-source Genode a été entreprise, dont le développement est supervisé par l'entreprise allemande Genode Labs. Un environnement de construction spécial basé sur Docker a été préparé pour ceux qui souhaitent expérimenter avec Phantom sur Genode.
L'utilisation de Genode permettra d'utiliser des micro-noyaux et des pilotes déjà éprouvés, ainsi que de déplacer les pilotes dans l'espace utilisateur (dans leur état actuel, les pilotes sont écrits en C et s'exécutent au niveau du noyau Phantom). Il sera également possible d'utiliser le micro-noyau seL4, qui a été mathématiquement vérifié pour sa fiabilité, confirmant que l'implémentation correspond entiÚrement aux spécifications définies dans un langage formel. Il est envisagé de préparer une preuve de fiabilité similaire pour la machine virtuelle Phantom, ce qui permettra de vérifier l'ensemble de l'environnement du systÚme d'exploitation.
Le port basĂ© sur Genode est principalement utilisĂ© pour le dĂ©veloppement d'applications destinĂ©es Ă divers appareils industriels et embarquĂ©s. Actuellement, un ensemble de modifications pour la machine virtuelle a Ă©tĂ© prĂ©parĂ©, et des couches fonctionnant au-dessus de Genode ont Ă©tĂ© ajoutĂ©es pour assurer la persistance des composants du noyau et des interfaces de bas niveau. Il est notĂ© que machine virtuelle Phantom peut dĂ©jĂ fonctionner dans un environnement Genode 64 bits, mais il reste Ă mettre en Ćuvre le fonctionnement de la VM en mode persistance, Ă revoir le sous-systĂšme des pilotes et Ă adapter les composants avec la pile rĂ©seau et le sous-systĂšme graphique pour Genode.



Source : opennet.ru
