Conceitos de Virtualização

Emular X Virtualizar

  • Um emulador cria um ambiente de hardware que não necessariamente tem relação com o hardware real, para isso é preciso que todas as instruções executadas sejam capturadas pelo emulador. Qemu é um exemplo de emulador que executa sobre o Linux.
  • A virtualização, implementada pelo VMWare e Xen, permite que algumas instruções que não comprometem o isolamento dos SO convidados sejam executadas diretamente em hardware, isso aumenta a performance do sistema.

im.gif
Esquema de Virtualização
IS : instruções senseíveis
INS: instruções não sensíveis
MMV: monitor de máquina virtual
Guest 1 e 2: SO hospedados.


Técnicas de Virtualização


Full Virtualization: permite virtualizar SO não modificados, pois replica virtualmente toda a arquitetura do hardware.
O VMWare é um exemplo de MMV (Monitor de Máquinas Virtuais) que implementa Full Virtualization. A VMWare originalmente precisava ser instalado sobre um SO hospedeiro, mas apresentava baixo desempenho em relação à paravirtualização. A nova versão VMWare ESX Server, que aproveita o suporte de hardware à virtualização, deve ser instalada diretamente no hardware, e com isso ela consegue um desempenho semelhante à paravirtualização.
A última versão do Xen, um MMV que originalmente somente implementava paravirtualização, também é capaz de implementar Full Virtualization quando o suporte de hardware à virtualização (Intel VT ou AMD Pacifica) está presente. O Xen é executado diretamente no hardware.
Isso mostra que a implementação da Full Virtualization é independente do fato de o MMV executar sobre um SO hospedeiro ou diretamente no hardware.

Como os SO convidados não foram modificados para serem virtualizados é preciso que eles acreditem que possuem o controle do hardware, mas quem realmente possui o controle é o MMV, também é preciso tratar certas instruções que podem vir a comprometer a execução virtualizada dos SO convidados.


Tipos de instruções: as instruções de um processador podem ser classificadas segundo 2 critérios:
  • Privilégio (no contexto de SO e aplicação):
    • privilegiadas: subconjunto de instruções que somente podem ser executadas pelo SO;
    • não privilegiadas: subconjunto de instruções que podem ser executadas pelo SO ou diretamente pelas aplicações que executam sobre o SO;
  • Sensibilidade (no contexto de MMV e o SO convidados):
    • sensíveis: instruções que em um contexto de virtualização podem interferir na execução de outros sistemas operacionais que compartilham os recursos de hardware, compromentendo o isolamento entre os SO convidados (i.e. instruções de acesso ao registrador da base da tabela de páginas) . Essas instruções devem ser detectadas pelo MMV que deve emulá-las de maneira a não comprometer o isolamento.
    • não sensíveis: instruções que não comprometem o isolamento entre os SO convidados, podendo se executadas diretamente no hardware, sem a interferência no MMV.


A grande maioria das instruções sensíveis são também instruções privilegiadas, isso facilita o monitoramento feito pelo MMV, pois ele só precisa conferir as instruções que geraram uma interrupção de software (trap) no SO hospedado, para ver se elas são sensíveis ou não. A arquitetura IA-32 dificulta o trabalho do MMV ao possuir um subconjunto de instruções sensíveis e não-privilegiadas, o que exige que o MMV monitore todas as instruções para verificar se são sensíveis, provocando um grande overhead.


Paravirtualization: o SO é modificado para poder executar corretamente com outros sistemas operacionais que também foram implementados para a paravirtualização. Com essa abordagem, em arquiteturas que não oferecem nenhuma assistência à virtualização, consegue-se uma performance melhor do que com a Full Virtualization onde o MMV precisa interferir constantemente quando são executadas instruções sensíveis.
A baixa performance da Full Virtualization nas arquiteturas que não ofereciam suporte à virtualização fez com que surgisse a paravirtualização que procura melhorar a performance modificando os sistemas operacionais para que ao invés de ir à CPU para executar tarefas privilegiadas eles vão ao MMV.
O Xen é um MMV que originalmente somente suportava a parvirtualização, ele é instalado diretamente no hardware.
Normalmente os MMV que suportam a paravirtualização devem ser instalados diretamente sobre o hardware.

Conclusão

As últimas versões tanto do VMWare quanto do Xen apresentam desempenho semelhante e ambas aproveitam o suporte de hardware à virtualização fornecido pelos processadores modernos.



Referências

  • 1 . Rose, R. Survey of System Virtualization Techniques. Março de 2004.
  • 2.Adams, K, Agesen, O. A Comparision of Software an Hardware Techniques for x86 Virtualization. Outuro de 2006.
  • 3.Em 11 de julho de 2007 - http://tx.downloads.xensource.com/downloads/docs/user/#SECTION01120000000000000000

Last edited Aug 7, 2007 at 5:04 PM by mkferreira, version 6

Comments

No comments yet.