Post on 21-Jan-2016
description
Virtualização
André Luis Loureiro de CarvalhoEduardo Lourenço Apolinário
Fernando Henrique Calheiros LopesFrancisco 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)