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

Post on 07-Apr-2016

217 views 1 download

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

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)