Virtualizao Andr Luis Loureiro de Carvalho Eduardo Loureno

  • Slides: 24
Download presentation
Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco

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

Agenda • Intro/História. . . • . . .

André

André

Por que virtualizar? • Consolidação de servidores – Menor TCO Diminuição do # de

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

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 Qo. S através

Por que virtualizar? • Múltiplos ambientes de execução – Aumento de Qo. S 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, Free. BSD, Windows, etc, rodando ao mesmo tempo em uma máquina

Por que virtualizar? • Debugging – Possibilita debugar sistemas operacionais e device drivers •

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

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

Atributos • • Compatibilidade de Software Isolamento Encapsulamento Performance

Compatibilidade de SW • Abstração compatível! – HW-Level: SOs e demais softwares – SW-Level:

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!) •

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

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

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

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

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

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

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

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

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

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

Hosted Architecture

Hypervisor Architecture

Hypervisor Architecture

Resto (sei lah como vai ser essa porra)

Resto (sei lah como vai ser essa porra)