Download - Virtualização

Transcript
Page 1: Virtualização

Virtualização

André Luis Loureiro de CarvalhoEduardo Lourenço Apolinário

Fernando Henrique Calheiros LopesFrancisco Carvalho Felipe Leal

Vítor Teixeira Costa

Page 2: Virtualização

Agenda

• Intro/História...

• ....

• ...

Page 3: Virtualização

André

Page 4: Virtualização

Por que virtualizar?

• Consolidação de servidores– Menor TCO

Diminuição do # de computadores

Diminuição dos custos com HW e manutenção!

Page 5: Virtualizaçã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

Page 6: Virtualização

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

Page 7: Virtualização

Por que virtualizar?

• Debugging– Possibilita debugar sistemas

operacionais e device drivers

• Migração de software– Facilita a migração de software entre

máquinas

Page 8: Virtualização

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

Page 9: Virtualização

Atributos

• Compatibilidade de Software

• Isolamento

• Encapsulamento

• Performance

Page 10: Virtualização

Compatibilidade de SW

• Abstração compatível!– HW-Level: SOs e demais softwares– SW-Level: Aplicações– Language-Level: Programas na

linguagem

Page 11: Virtualização

Isolamento

• Ambiente isolado• Contensão contra bugs e hackers

(debugging - sandboxing!)

• Mascaramento das camadas subjacentes

“write once, run anywhere!”

Page 12: Virtualização

Encapsulamento

• Controle do SW virtualizador pelo SW subjacente

Melhor ambiente de execução!

Page 13: Virtualização

Encapsulamento

• Máquinas virtuais de linguagens de alto nível:– Runtime checks– Gerenciamento de memória– Garbage collection– ...

Ambiente de programação filé!

Page 14: Virtualização

Performance

• Camadas extras de abstração...

... overhead extra na execução

• Máquinas virtuais bem sucedidas valem à pena!

Page 15: Virtualização

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...

Page 16: Virtualização

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

Page 17: Virtualização

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

Page 18: Virtualização

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

Page 19: Virtualização

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

Page 20: Virtualização

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

Page 21: Virtualização

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

Page 22: Virtualização

Hosted Architecture

Page 23: Virtualização

Hypervisor Architecture

Page 24: Virtualização

Resto (sei lah como vai ser essa porra)