1. Virtualização de Máquinas
Uma experiência baseada em ferramentas livres
Carlos A. M. dos Santos
echo unixmania at gmail dot com | sed 's/ at /@/;s/ dot /./g'
1º Seminário de Software Livre Tchelinux
Pelotas, 24 de março de 2007
2. Sobre o Palestrante
● Engenheiro agrícola* (UFPel, 1988)
● Pesquisador bolsista (EMBRAPA, 1989-1993)
● Programador e gerente de redes (CPMet/UFPel,
provedores de serviços Internet, 1993-1999)
● Mestre em Ciência da Computação, na área de
Computação Gráfica (UFRGS, 1998-2000)
● Professor de CG, programação e redes (URI, Santo
Ângelo, 2001-2005)
● Atualmente: HP Brasil (IPL)
* Acredite se quiser!
3. Ressalva
As opiniões expostas aqui são do
palestrante, apenas, e não representam
políticas, processos ou estratégias de
mercado da HP.
As informações expostas aqui não
representam produtos, software ou serviços
comercializados pela HP.
4. Temas Abordados
● Teoria (não dói!)
– Instruction Set Architecture
– Definição formal de virtualização
– Tipos de virtualização
– Vantagens e desvantagens
● Exemplo prático
– QEMU: diversos SOs rodando simultaneamente
5. Instruction Set Architecture*
● Delimita a divisão entre hardware e software
● Hardware: dispositivo caracterizado por
– um conjunto finito de estados válidos (registradores,
memória)
– um conjunto finito de instruções executáveis válidas
● Software: um conjunto cujos elementos são
instruções válidas
● A execução das instruções provoca transições de
estados
* Doravante abreviada para ISA
6. e(Si )
Si Sj
Exemplo: a execução da intrução e muda o estado do
hardware de Si para Sj
Referência: Smith, James E. & Nair, Ravi. Virtual Machines.
San Francisco: Morgan Kaufmann, 2005.
7. Virtualização
É a construção de um isomorfismo entre um sistema
hóspede e um sistema hospedeiro*
e(Si )
Si Sj
hóspede
V(Si ) V(Sj )
e'(S'i )
S'i S'j
hospedeiro
* Popek & Goldberg, 1974
8. Tipos de Virtualização
● Em nível de processo
– O hóspede é um único processo de usuário
– A máquina virtual provê uma ABI* para o processo
● Em nível de sistema
– Muitos processos de usuário podem coexistir
– A máquina virtual provê um ambiente completo
* Application Binary Interface
9. Virtualização em nível de processo
Processo Processo
Hóspede Aplicativo Aplicativo
Runtime Software de
Virtualização
Máquina
Virtual
Sistema
Operacional
Hospedeiro
Hardware
10. Virtualização em nível de sistema
Processo Processo
Aplicativo Aplicativo
Hóspede
Sistema Sistema
Operacional Operacional
VMM
Software de
Virtualização Máquina
Virtual
Hospedeiro Hardware
11. Virtualização em Nível de Processo
● Multiprogramação: SO roda processos concorrentes
● Emulador/tradutor binário dinâmico: simula uma
ISA (FX!32, Wine, PACE, QuickTransit/Rosetta)
● Otimizador binário dinâmico: modifica código para
melhor desempenho (HP Dynamo)
● VM de linguagem de alto nível (p-Machine, Java)
● Exceções/mistos
– FX32: recompilador dinâmico para a mesma ISA
– Jalapeño: VM Java que faz otimização binária
– FreeBSD Linux mode: vetor de serviços de sistema
– FreeBSD Jails: contexto isolado restrito (Verio VPS)
12. Exemplos de virtualização em nível de processo
Aplicação Windows (IA32) Aplicação M68k
(Palm OS 4) Aplicação ARM32
Windows NT (Palm OS 5)
PACE (runtime)
(Alpha) Runtime
Bibliotecas
ISA Alpha (RISC, 64 Bits)
Palm OS 5
FX!32
DAL: Device Abstraction Layer
Aplicação Windows (IA32)
HAL: Hardware Abstraction Layer
Runtime
Unix ISA ARM32
ISA IA32
Palm OS Application Compatibility
Wine: Windows Emulator Environment Palm OS 5
13. Virtualização em Nível de Sistema
● VM clássica: hypervisor (VMM) gerencia o hardware
e suporta múltiplos SOs (VM/370, VM/CMS, z/VM)
● VM hóspede: roda em um SO (VMware, Virtual PC
for Windows, QEMU Accelerator)
● Sistema completo: emula um computador (QEMU,
Virtual PC for Mac, POSE, dúzias!)
● Codesign: semelhante a microcódigo, processador
expõe uma ISA virtual (Crusoe, IBM AS/400)
● Exceções/mistos
– Virtualização auxilida por hardware (VT-x, AMD-V)
– Xen: Paravirtualization (SO hóspede modificado)
14. Exemplos de virtualização em nível de sistema
Aplicação Linux (SPARC32)
SPARC Linux
QEMU (runtime) VM1 VM2
FreeBSD Aplicação Aplicação
Linux z/OS
ISA IA32
z/Linux z/OS
Aplicação Windows (IA32) Hypervisor (runtime)
Windows XP (IA32)
QEMU (runtime) z/Architecture
FreeBSD Kqemu
z/VM
ISA IA32
QEMU
15. Vantages e Desvantagens
Vantagens Desvantagens
● Redução de custos ● Desempenho limitado
● Segurança ● Emulação incompleta
● Flexibilidade ● Necessidade de alterar
o hóspede (às vezes)
Vantages e desvantagens sempre são relativas!
16. Exemplo Prático
QEMU: diversos SOs rodando simultaneamente
Aplicação FreeBSD (IA32)
FreeBSD (IA32)
QEMU (runtime)
Linux Kqemu
ISA IA32