Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique...

Preview:

Citation preview

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)

Recommended