Tipos de máquinas virtuais

Concluído

Há duas implementações principais de VMs (máquinas virtuais): VMs de processo e VMs de sistema. O seguinte vídeo aborda a taxonomia de tipos de máquinas virtuais:

Primeiro, abordaremos as VMs de processo e, depois, as VMs de sistema.

Máquinas virtuais de processo

Process virtual machines.

Figura 4: máquinas virtuais de processo

Uma VM de processo é uma VM que pode dar suporte a um processo individual, desde que o processo esteja ativo. A Figura 4 demonstra as VMs de processo. Uma VM de processo é encerrada quando o processo hospedado é interrompido. Do ponto de vista de uma VM de processo, um computador consiste em um espaço de endereço de memória virtual, registradores no nível de usuário e instruções atribuídas a um processo para executar um programa de usuário. De acordo com essa definição, um processo em um sistema operacional de uso geral também pode ser chamado de computador. No entanto, um processo normal em um sistema operacional só pode dar suporte a binários do programa de usuário compilados para o ISA do computador host. Ou seja, não há suporte para a execução de binários compilados para um ISA diferente daquele do computador host em processos normais. Por outro lado, uma VM de processo permite que isso aconteça. As VMs de processo podem dar suporte a ISAs diferentes dos ISAs do host por meio da emulação. Como mostra a Figura 5, a emulação é o processo de permitir que as interfaces e as funcionalidades de um sistema (a origem) sejam implementadas em um sistema com interfaces e funcionalidades diferentes (o destino). A emulação é abordada detalhadamente mais adiante. A abstração da VM de processo é fornecida por um software de virtualização chamado de runtime (veja a Figura 4). O runtime é colocado na ABI (interface binária de aplicativo) no sistema operacional do host e no hardware subjacente. É esse runtime que emula as instruções da VM e/ou as chamadas do sistema quando os ISAs convidados e host são diferentes.

Emulation process.

Figura 5: processo de emulação

Por fim, talvez uma VM de processo não seja um correspondente direto de nenhuma plataforma física; ela é empregada principalmente para oferecer portabilidade multiplataforma. Esses tipos de VMs de processo são chamados de VMs HLL (VMs de linguagem de alto nível). Uma VM HLL abstrai os detalhes dos recursos de hardware subjacentes e do sistema operacional e permite que os programas sejam executados da mesma maneira em qualquer plataforma. A JVM (VM Java) e a Microsoft CLI (Common Language Infrastructure) são exemplos de VMs HLL.

Em resumo, uma VM de processo é semelhante a um processo normal em execução em um sistema operacional. No entanto, uma VM de processo permite, por meio da emulação, a execução de um aplicativo compilado para um ISA diferente daquele do computador host.

Máquinas virtuais de sistema

Ao contrário das VMs de processo, uma VM de sistema é uma VM que pode virtualizar um conjunto completo de recursos de hardware, incluindo processadores, memórias e dispositivos de E/S, fornecendo um ambiente de sistema completo. Uma VM de sistema pode dar suporte a um sistema operacional junto com os processos associados, desde que o ambiente do sistema esteja ativo. A Figura 6 ilustra as VMs de sistema. Como definido anteriormente, o hipervisor (ou o VMM [monitor de VM]) é um software que fornece a abstração para a VM de sistema. Ele pode ser colocado no nível do ISA diretamente no hardware bruto e sob as imagens do sistema (por exemplo, sistemas operacionais). Os recursos de hardware da plataforma host podem ser compartilhados entre várias VMs convidadas. O hipervisor gerencia a alocação dos recursos de hardware e o acesso a eles pelas VMs convidadas. Na prática, o hipervisor fornece uma forma elegante de isolar logicamente várias VMs convidadas que compartilham um só sistema físico. Cada VM convidada é levada a acreditar ter adquirido todos os recursos de hardware subjacentes.

System virtual machines.

Figura 6: máquinas virtuais de sistema

Há diferentes classes de VMs de sistema. A Figura 7 apresenta três dessas classes, bem como os sistemas tradicionais. Em um sistema convencional de tempo compartilhado, o sistema operacional é executado em um modo privilegiado (modo de sistema), enquanto os aplicativos associados a ele são executados em um modo sem privilégios (modo de usuário). (Abordaremos outros detalhes sobre os privilégios do sistema serão mais adiante.) No entanto, com a virtualização do sistema, os SOs convidados podem ser executados em um modo sem privilégios, enquanto o hipervisor opera em um modo privilegiado. Esse sistema é chamado de VM de sistema nativa. Em uma VM de sistema nativa, cada instrução privilegiada emitida por um programa de usuário em qualquer SO convidado precisa fazer a interceptação para o hipervisor. Além disso, o hipervisor precisa especificar e implementar cada função necessária para gerenciar os recursos de hardware. Por outro lado, se o hipervisor operar em um modo sem privilégios em um sistema operacional do host, os SOs convidados também funcionarão em um modo sem privilégios. Esse sistema é chamado de VM de sistema hospedada no modo de usuário. Nesse caso, as instruções privilegiadas dos SOs convidados ainda precisam fazer a interceptação para o hipervisor. Em troca, o hipervisor também precisa fazer a interceptação para o sistema operacional do host. É evidente que esse requisito aumenta a sobrecarga pela adição de mais uma interceptação para cada instrução privilegiada. No entanto, o hipervisor pode utilizar as funções já disponíveis no sistema operacional do host para gerenciar os recursos de hardware. Por fim, o hipervisor pode operar parcialmente em um modo privilegiado e, parcialmente, no modo de usuário em um sistema chamado de VM de sistema hospedada no modo duplo. Dessa forma, o hipervisor pode usar as funções de gerenciamento de recursos do sistema operacional do host e impedir a interceptação adicional para cada instrução privilegiada imposta nas VMs de sistema hospedadas no modo de usuário.

Different system VM classes.

Figura 7: diferentes classes de VM de sistema

Verificar seu conhecimento

1.

Um navegador da Web para as plataformas Android e iOS alega ser muito mais seguro do que os concorrentes. O diferencial dele é capacidade de executar o código nativamente nos dispositivos dos usuários para fornecer aplicativos sofisticados que são executados perfeitamente. Esse navegador também oferece maior segurança porque todos os plug-ins baseados na Web (por exemplo, JavaScript, Flash, miniaplicativos Java) são executados em um mecanismo de virtualização de runtime interno do navegador da Web. Esse navegador da Web é um exemplo de:

2.

O CVGS (Connectix Virtual Game Station) é um programa desenvolvido pela Connectix que permite aos computadores (que, normalmente, executam um processador x26 de 32 bits ou uma arquitetura PowerPC) executarem videogames projetados para serem executados no PlayStation da Sony (em execução em um processador MIPS de 32 bits). O CVGS é compatível com o Windows e o Mac OS. Que tipo de aplicativo é o CVGS?

3.

O VirtualBox é um hipervisor popular que permite aos usuários executar vários sistemas operacionais em um só computador. O VirtualBox pode ser executado no Windows, no Linux, no Mac OS e no Solaris. Que tipo de hipervisor é o VirtualBox?