Virtualização
André Luis Loureiro de Carvalho
Eduardo Lourenço Apolinário
Fernando Henrique Calheiros Lopes
Francisco Carvalho Felipe Leal
Vítor Teixeira Costa
Agenda
• Intro/História...
• ....
• ...
André
Por que virtualizar?
• Consolidação de servidores
– Menor TCO
Diminuição do # de computadores
Diminuição dos custos com HW e
manutenção!
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
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
Por que virtualizar?
• Debugging
– Possibilita debugar sistemas
operacionais e device drivers
• Migração de software
– Facilita a migração de software entre
máquinas
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
Atributos
•
•
•
•
Compatibilidade de Software
Isolamento
Encapsulamento
Performance
Compatibilidade de SW
• Abstração compatível!
– HW-Level: SOs e demais softwares
– SW-Level: Aplicações
– Language-Level: Programas na
linguagem
Isolamento
• Ambiente isolado
• Contensão contra bugs e hackers
(debugging - sandboxing!)
• Mascaramento das camadas
subjacentes
“write once, run anywhere!”
Encapsulamento
• Controle do SW virtualizador pelo
SW subjacente
Melhor ambiente de execução!
Encapsulamento
• Máquinas virtuais de linguagens de alto
nível:
–
–
–
–
Runtime checks
Gerenciamento de memória
Garbage collection
...
Ambiente de
programação filé!
Performance
• Camadas extras de abstração...
... overhead extra na execução 
• Máquinas virtuais bem sucedidas
valem à pena!
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...
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
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
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
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
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
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
Hosted Architecture
Hypervisor Architecture
Resto (sei lah como vai ser essa
porra)
Download

Slide 1