Resumo
- A virtualização envolve a construção de um isomorfismo que mapeia um sistema convidado virtual para um sistema host real (ou físico).
- Um PM (computador físico) subjacente geralmente é chamado de host, e um sistema operacional em execução em uma VM é chamado de SO convidado.
- Em comparação com um PM host, uma VM pode ter recursos diferentes na quantidade e no tipo. (Por exemplo, um host pode conter uma CPU física Intel IA-32, enquanto uma VM pode incluir oito CPUs virtuais PowerPC mapeadas para a única CPU física.)
- Uma VM pode ser executada somente em um host em determinado ponto no tempo, mas pode ser migrada para outro host (e executada nele) em um ponto diferente no tempo.
- Há dois tipos de VMs: VMs de processo e VMs de sistema.
- Uma VM de processo (por exemplo, a JVM) consiste em um espaço de endereço de memória virtual, registros no nível de usuário e instruções atribuídas a um processo de sistema operacional para executar um programa de usuário (por exemplo, nenhum sistema operacional pode ser executado em uma VM de processo).
- As VMs de processo podem dar suporte aos ISAs que diferem dos ISAs host.
- A abstração de uma VM de processo é fornecida por um software de virtualização caracterizado como o runtime.
- O runtime de uma VM de processo é colocado na interface ABI em um sistema operacional do host.
- Ao contrário das VMs de processo, uma VM de sistema fornece um ambiente de sistema completo (por exemplo, uma imagem do sistema operacional pode ser executada em uma VM de sistema).
- As VMs de sistema podem dar suporte aos ISAs que diferem dos ISAs host.
- A abstração de uma VM de sistema é fornecida por um software de virtualização chamado de hipervisor (ou o VMM [monitor de máquina virtual]).
- Há três classes principais de VMs de sistema, que são definidas de acordo com o local no sistema em que o hipervisor é colocado.
- Uma VM de sistema é chamada de VM de sistema nativa quando o hipervisor é colocado em bare-metal (como o hardware bruto).
- Em VMs de sistema nativas, o hipervisor é executado no modo de sistema e as VMs (junto com os respectivos sistemas operacionais associados) são executadas no modo de usuário.
- Os hipervisores nas VMs de sistema nativas devem especificar e implementar cada função necessária para o gerenciamento de recursos de hardware.
- Com as VMs de sistema nativas, cada instrução privilegiada emitida por um programa de usuário em qualquer SO convidado precisa fazer a interceptação para o hipervisor.
- Uma VM de sistema é chamada de VM hospedada no modo de usuário quando o hipervisor é colocado em um sistema operacional do host.
- Em VMs hospedadas no modo de usuário, o hipervisor e todas as VMs gerenciadas são executadas no modo de usuário, enquanto o sistema operacional do host subjacente é executado no modo de sistema.
- Com as VMs hospedadas no modo de usuário, as instruções privilegiadas dos SOs convidados precisam fazer a interceptação para o hipervisor, mas o hipervisor não precisa implementar todas as funções necessárias para gerenciar os recursos de hardware.
- Uma VM de sistema é chamada de VM hospedada no modo duplo quando o hipervisor é colocado parcialmente em bare-metal e parcialmente em um sistema operacional do host.
- Em VMs hospedadas no modo duplo, o hipervisor pode operar parcialmente no modo de sistema e parcialmente no modo de usuário. Portanto, ele pode usar o melhor das VMs de sistema nativas e das VMs hospedadas no modo de usuário.