O documento discute sobre virtualização de sistemas. Apresenta os benefícios da virtualização como consolidação de servidores, múltiplos ambientes de execução e isolamento de aplicações. Detalha os atributos chave da virtualização como compatibilidade de software, isolamento, encapsulamento e desempenho. Explora os desafios da virtualização de arquiteturas como IA-32 que não atendem plenamente aos requisitos de Popek e Goldberg.
1. Virtualização
André Luis Loureiro de Carvalho
Eduardo Lourenço Apolinário
Fernando Henrique Calheiros Lopes
Francisco Carvalho Felipe Leal
Vítor Teixeira Costa
4. Por que virtualizar?
• Consolidação de servidores
– Menor TCO
Diminuição do # de computadores
Diminuição dos custos com HW e
manutenção!
5. Por que virtualizar?
• Consolidação de aplicações
– Virtualizando hardware necessário para
aplicações legadas
• Sandboxing
– VMs são ambientes seguros e isolados
para rodar aplicações de terceiros ou
pouco confiáveis
6. Por que virtualizar?
• Múltiplos ambientes de execução
– Aumento de QoS através de garantia de
quantidade específicas de recursos
• Hardware virtual
– Uma VM pode fornecer hardware que não
existe fisicamente (ex: SCSI)
• Múltiplos SOs simultâneos
– Linux, FreeBSD, Windows, etc, rodando ao
mesmo tempo em uma máquina
7. Por que virtualizar?
• Debugging
– Possibilita debugar sistemas
operacionais e device drivers
• Migração de software
– Facilita a migração de software entre
máquinas
8. Por que virtualizar?
• Appliances
– Permite o empacotamento de aplicação
junto com o sistema operacional
• Teste/QA
– Permite a criação de cenários de teste
difíceis de reproduzir
13. Encapsulamento
• Máquinas virtuais de linguagens de alto
nível:
– Runtime checks
– Gerenciamento de memória
– Garbage collection
– ...
Ambiente de
programação filé!
14. Performance
• Camadas extras de abstração...
... overhead extra na execução
• Máquinas virtuais bem sucedidas
valem à pena!
15. Requisitos para Máquinas Virtuais
• Popek e Goldberg (1974)
– “For any computer a virtual machine
monitor may be constructed if the set of
sensitive instructions for that computer
is a subset of the set of privileged
instructions.”
• Em outras palavras...
16. Requisitos para Máquinas Virtuais
• Três características essenciais
(Popek e Goldberg):
– Execução idêntica
• Exceção: timing
– Subconjunto estatisticamente dominante
de instruções são executadas pelo
processador real
– A VMM tem controle total
17. Virtualizando IA-32
• Não atende ao primeiro requisito de
Popek e Goldberg:
– 17 instruções que deveriam gerar trap
não geram
• Grande quantidade de devices e
drivers
18. Virtualizando IA-32
• Instruções problemáticas:
– SGDT, SIDT, SLDT
• Contém endereço linear de suas
respectivas tabelas
– SMSW
• Armazena o valor da machine status word
– PUSHF, POPF
• Atualizar o registrador EFLAGS
19. Virtualizando IA-32
• Instruções problemáticas:
– LAR, LSL, VERR, VERW
• Permitem verificar direitos de acesso de
registradores de segmento e se um segmento pode
ser lido/escrita no CPL atual
– PUSH
• Permitiria que o valor do registrador CS (que contém
o CPL) seja examinado
– POP
• Não pode ser usada para carregar um novo valor no
registrador CS
20. Virtualizando IA-32
• Instruções problemáticas
– CALL, JMP, INT n, RET
• Calls e jumps pra segmentos com diferente nível de
prioridade
– STR
• Permite a verificação do RPL do atual Task Segment
Selector
– MOVE
• Permite a verificar o CPL dos registratores CS e SS
21. Virtualizando IA-32
• Procedimentos para virtualizar IA-32
(Robin e Irvine):
– Instruções não-sensíveis e não-privilegiadas
podem ser rodadas diretamente no
processador
– Instruções sensíveis e privilegiadas geram trap
– Instruções sensíveis e não privilegiadas devem
ser detectadas