Dmitry Zavalishin falou sobre o projeto de portabilidade da máquina virtual do sistema operacional Phantom para funcionar no ambiente do microkernel Genode. Na entrevista, ele menciona que a versão principal do Phantom já está pronta para projetos piloto, e a versão baseada no Genode estará pronta para uso até o final do ano. No entanto, o site do projeto atualmente apresenta apenas um protótipo conceitual funcional, cuja estabilidade e funcionalidade ainda não atingiram um nível adequado para uso industrial, e entre os planos imediatos está a formação de uma versão alfa, adequada para experimentação por desenvolvedores externos.
O código do projeto é distribuído sob a licença LGPL, mas a última alteração no repositório principal remonta a novembro de 2019. A atividade pública relacionada ao projeto está concentrada em um repositório fork para Genode, que desde dezembro de 2020 é mantido por Anton Antonov, um estudante da Universidade de Innopolis.
O sistema operacional Phantom, desde o início dos anos 2000, se desenvolveu como um projeto pessoal de Dmitry Zavalishin, e desde 2010 foi incorporado à empresa Digital Zone, criada por Dmitry. O sistema é notável por sua orientação para alta confiabilidade e pelo uso do conceito de "tudo é objeto" em vez de "tudo é arquivo", o que permite dispensar o uso de arquivos através da preservação do estado da memória e um ciclo de trabalho contínuo. Aplicativos no Phantom não terminam, mas apenas são suspensos e retomam o funcionamento do ponto em que foram interrompidos. Todas as variáveis e estruturas de dados podem ser armazenadas pelo tempo que o aplicativo necessitar, e o programador não precisa se preocupar em salvar os dados.
Aplicativos no Phantom são compilados em bytecode, que é executado em uma máquina virtual empilhada, semelhante à máquina virtual Java. A máquina virtual garante a persistência da memória dos aplicativos — o sistema periodicamente salva snapshots do estado da máquina virtual em um meio de armazenamento permanente. Após o desligamento ou término inesperado, o trabalho pode ser retomado a partir do último snapshot de memória salvo. Os snapshots são criados de forma assíncrona e sem interromper a operação da máquina virtual, mas no snapshot é registrado um corte em um dado momento, como se a máquina virtual tivesse sido parada, salva no disco e reiniciada.
Todos os aplicativos são executados em um espaço de endereço global compartilhado, o que elimina a necessidade de alternâncias de contexto entre o núcleo e os aplicativos, além de simplificar e acelerar significativamente a interação entre os aplicativos em execução na máquina virtual, que podem trocar objetos via passagem de referências. O acesso é segregado ao nível dos objetos, cujas referências só podem ser obtidas por meio da chamada dos métodos correspondentes (a aritmética de ponteiros está ausente). Quaisquer dados, incluindo valores numéricos, são tratados como objetos distintos.
Para o aplicativo, a operação parece contínua e não depende de reinicializações do sistema operacional, terminais inesperados e desligamentos do computador. O modelo de programação para o Phantom é comparável à execução de servidor aplicativos para uma linguagem de programação orientada a objetos. Uma das principais formas de desenvolver aplicativos é considerada a portabilidade para o Phantom de programas escritos na linguagem Java, o que é facilitado pela semelhança da máquina virtual Phantom com a JVM. Além do compilador de bytecode para Java, o projeto planeja desenvolver compiladores para Python e C#, bem como implementar um tradutor de código intermediário para WebAssembly.
Para realizar operações que exigem alto desempenho, como processamento de vídeo e áudio, há a possibilidade de executar em fluxos separados objetos binários com código nativo (o LLVM é utilizado para compilar os objetos binários). Para acessar serviços de baixo nível do núcleo, uma parte das classes VM (as chamadas "classes internas") é implementada a nível do núcleo do sistema operacional. Para executar aplicativos Linux, existe uma camada POSIX que emula as chamadas necessárias para a operação de processos Unix (a persistência para aplicativos na camada POSIX ainda não está assegurada).

O sistema operacional tradicional Phantom, além da máquina virtual, inclui seu próprio núcleo com implementação de threads, gerenciador de memória, coletor de lixo, mecanismos de sincronização, sistema de entrada/saída e drivers para interação com o hardware, o que complica significativamente a finalização do projeto para uso generalizado. Componentes com pilha de rede, subsistema gráfico e interface de usuário são desenvolvidos separadamente. É notável que o subsistema gráfico e o gerenciador de janelas operam a nível do núcleo.
Para aumentar a estabilidade, portabilidade e segurança do projeto, foi tentado transferir a máquina virtual Phantom para trabalhar com componentes do sistema operacional microkernel Genode, cujo desenvolvimento é supervisionado pela empresa alemã Genode Labs. Para aqueles que desejam experimentar o Phantom com base no Genode, foi preparado um ambiente de construção especial baseado em Docker.
O uso do Genode permitirá a utilização de microkernels e drivers já testados, além de mover os drivers para o espaço do usuário (na sua forma atual, os drivers são escritos em C e executados no nível do núcleo do Phantom). Assim, haverá a possibilidade de usar o microkernel seL4, que passou por verificação matemática de confiabilidade, confirmando que a implementação está totalmente de acordo com as especificações definidas em uma linguagem formal. Está sendo considerada a possibilidade de preparar uma prova de confiabilidade semelhante para a máquina virtual Phantom, o que permitirá a verificação de todo o ambiente do sistema operacional.
A principal área de aplicação do porto baseado no Genode é o desenvolvimento de aplicativos para vários dispositivos industriais e embarcados. Atualmente, já foi preparado um conjunto de alterações para a máquina virtual e foram adicionadas interfaces operacionais sobre o Genode para garantir a persistência dos componentes do núcleo e das principais interfaces de baixo nível. Observa-se que máquina virtual O Phantom já pode funcionar em um ambiente Genode de 64 bits, mas ainda é necessário implementar o funcionamento da VM em modo de persistência, reformular o subsistema de drivers e adaptar os componentes com a pilha de rede e o subsistema gráfico para o Genode.



Fonte: opennet.ru
