Le prototype du Phantom OS domestique basé sur Genode sera prêt d'ici la fin de l'année

Dmitry Zavalishin a parlé d'un projet visant à porter une machine virtuelle du système d'exploitation Phantom pour qu'elle fonctionne dans l'environnement OS du micronoyau Genode. L'interview indique que la version principale de Phantom est déjà prête pour des projets pilotes et que la version basée sur Genode sera prête à être utilisée à la fin de l'année. Dans le même temps, seul un prototype conceptuel réalisable a été annoncé sur le site Web du projet, dont la stabilité et la fonctionnalité n'ont pas été portées à un niveau adapté à une utilisation industrielle, et parmi les plans immédiats, la formation d'une version alpha adaptée aux expériences par des développeurs tiers est mentionné.

Le code du projet est distribué sous licence LGPL, mais la dernière modification dans le référentiel principal date de novembre 2019. L'activité publique liée au projet est concentrée dans un référentiel avec un fork pour Genode, qui est maintenu depuis décembre 2020 par Anton Antonov, étudiant de l'Université d'Innopolis.

Depuis le début des années 2000, le système d'exploitation Phantom se développe comme un projet personnel de Dmitry Zavalishin, et depuis 2010 il a été transféré sous l'aile de la société Digital Zone créée par Dmitry. Le système se distingue par l'accent mis sur une haute fiabilité et l'utilisation du concept « tout est un objet » au lieu de « tout est un fichier », ce qui permet de se passer de l'utilisation de fichiers en raison de la préservation de l'état de la mémoire et un cycle de travail continu. Les applications dans Phantom ne sont pas terminées, mais sont simplement suspendues et reprises à partir du point interrompu. Toutes les variables et structures de données peuvent être stockées aussi longtemps que l'application en a besoin, et le programmeur n'a pas à se soucier spécifiquement de la sauvegarde des données.

Les applications de Phantom sont compilées en bytecode, qui s'exécute dans une machine virtuelle basée sur une pile, similaire à la machine virtuelle Java. La machine virtuelle assure la persistance de la mémoire de l'application : le système réinitialise périodiquement les instantanés de l'état de la machine virtuelle sur un support permanent. Après un arrêt ou un crash, le travail peut continuer à partir du dernier instantané de mémoire enregistré. Les instantanés sont créés en mode asynchrone et sans interrompre le fonctionnement de la machine virtuelle, mais une tranche unique est enregistrée dans l'instantané, comme si la machine virtuelle était arrêtée, enregistrée sur le disque et redémarrée.

Toutes les applications s'exécutent dans un espace d'adressage global commun, ce qui élimine le besoin de changements de contexte entre le noyau et les applications, et simplifie et accélère également considérablement l'interaction entre les applications exécutées dans la machine virtuelle, qui peuvent échanger des objets via le passage de références. La séparation des accès s'effectue au niveau des objets dont les références ne peuvent être obtenues qu'en appelant les méthodes appropriées (il n'y a pas d'arithmétique de pointeur). Toutes les données, y compris les valeurs numériques, sont traitées comme des objets distincts.

Pour l’application, le travail semble être continu et ne dépend pas des redémarrages du système d’exploitation, des pannes et des arrêts d’ordinateur. Le modèle de programmation de Phantom est comparé à l'exécution d'un serveur d'applications sans arrêt pour un langage de programmation objet. Le portage de programmes Java vers Phantom est considéré comme l'une des principales méthodes de développement d'applications, 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 de créer des compilateurs pour Python et C#, ainsi que d'implémenter un traducteur à partir du code intermédiaire WebAssembly.

Pour effectuer des opérations nécessitant des performances élevées, telles que le traitement vidéo et audio, il est possible d'exécuter des objets binaires avec du code natif dans des threads séparés (LLVM est utilisé pour assembler des objets binaires). Pour accéder aux services du noyau de bas niveau, certaines classes de VM (classes « internes ») sont implémentées au niveau du noyau du système d'exploitation. Pour exécuter les applications Linux, une couche POSIX est fournie qui émule les appels nécessaires au fonctionnement des processus Unix (la persistance des applications dans la couche POSIX n'est pas encore fournie).

Le prototype du Phantom OS domestique basé sur Genode sera prêt d'ici la fin de l'année

Phantom OS traditionnel, en plus de la machine virtuelle, comprend son propre noyau avec l'implémentation de threads, un gestionnaire de mémoire, un garbage collector, des mécanismes de synchronisation, un système d'entrée/sortie et des pilotes pour travailler avec le matériel, ce qui complique considérablement la réalisation du projet. prête à être utilisée à grande échelle. Séparément, des composants avec une pile réseau, un sous-système graphique et une interface utilisateur sont en cours de développement. Il est à noter que le sous-système graphique et le gestionnaire de fenêtres fonctionnent au niveau du noyau.

Pour augmenter la stabilité, la portabilité et la sécurité du projet, une tentative a été faite pour porter la machine virtuelle Phantom afin qu'elle fonctionne en utilisant des composants du système d'exploitation à micro-noyau ouvert Genode, dont le développement est supervisé par la société allemande Genode Labs. Pour ceux qui souhaitent expérimenter Phantom basé sur Genode, un environnement de construction spécial basé sur Docker a été préparé.

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 (sous leur forme actuelle, les pilotes sont écrits en C et exécutés au niveau du noyau Phantom). Il sera notamment possible d'utiliser le micro-noyau seL4, qui a fait l'objet d'une vérification mathématique de fiabilité, confirmant que l'implémentation est pleinement conforme aux spécifications spécifiées dans le langage formel. La possibilité de préparer une preuve de fiabilité similaire pour la machine virtuelle Phantom est à l'étude, ce qui permettra de vérifier l'ensemble de l'environnement du système d'exploitation.

Le principal domaine d'application du port basé sur Genode est le développement d'applications pour divers appareils industriels et embarqués. Actuellement, un ensemble de modifications pour la machine virtuelle a déjà été préparé et des liaisons ont été ajoutées qui fonctionnent au-dessus de Genode pour assurer la persistance des composants du noyau et des principales interfaces de bas niveau. A noter que la machine virtuelle Phantom peut déjà fonctionner dans l'environnement Genode 64 bits, mais il faut encore implémenter la VM en mode persistance, retravailler le sous-système pilote et adapter les composants avec une pile réseau et un sous-système graphique pour Genode.

Le prototype du Phantom OS domestique basé sur Genode sera prêt d'ici la fin de l'année
Le prototype du Phantom OS domestique basé sur Genode sera prêt d'ici la fin de l'année
Le prototype du Phantom OS domestique basé sur Genode sera prêt d'ici la fin de l'année


Source: opennet.ru

Ajouter un commentaire