Suporte para execução de máquinas virtuais nativas - BV FAPESP
Suporte para execução de máquinas virtuais nativas
Uma máquina virtual é um programa de computador que emula uma interface para execução de outros programas. Esta tecnologia está presente em diversos sistemas computacionais e é utilizada desde o suporte a linguagens de programação de alto nível, como na máquina virtual Java, até a implementação de processadores com projeto integrado de hardware e software, como é o caso do processador Efficeon da Transmeta. Na tentativa de elevar o desempenho, alguns tipos específicos de máquinas virtuais podem requerer um acesso privilegiado a recursos administrados pelo sistema operacional. Consequentemente, em virtude dessa necessidade de obter um maior privilégio de execução, alguns projetos de máquinas virtuais optam por soluções nativas, removendo completamente a dependência de um sistema operacional. Essa solução, apesar da complexidade, possibilita a redução de grande parte da pilha de software existente entre a máquina virtual e o hardware, eliminando diversas restrições de acesso a dispositivos e a concorrência pela utilização de recursos. Apesar da flexibilidade proporcionada pela adoção de uma arquitetura nativa, existe um preço a ser pago na escolha dessa abordagem. Desenvolver um programa que executa sem o auxílio das abstrações fornecidas por um sistema operacional é uma atividade complexa, suscetível a erros e pode prejudicar gravemente a portabilidade. Dessa forma, conjecturamos que uma infraestrutura mínima, capaz de abstrair somente o essencial do hardware, fornecendo uma interface POSIX, simplificaria o projeto de novas máquinas virtuais nativas. Neste trabalho apresentamos o Native Kit, uma infraestrutura modular, compatível com o padrão POSIX e que foi construído para dar suporte à implementação e execução de máquinas virtuais nativas. Todos os módulos foram projetados de forma a eliminar dependências, tornando esta infraestrutura simples, flexível e capaz de se adaptar a diversos requisitos de aplicações nativas. Além disso, para validar e demonstrar como a nossa infraestrutura pode ser utilizada na prática, implementamos dois estudos de caso capazes de serem executados diretamente sobre o hardware, sem o auxílio de um sistema operacional. Esses estudos de caso poderão ser utilizados como ponto de partida para construção de novas máquinas virtuais nativas, contribuindo para o desenvolvimento de diversas pesquisas relacionadas. (AU)