Máquinas Virtuais e Emuladores
Marcos Aurelio Pchek
Laureano
Sistemas de Computadores
z Os
sistemas de computadores são
projetados com basicamente 3
componentes:
[email protected]
www.laureano.eti.br
– hardware
– sistema
operacional
– aplicações
Sistemas de Computadores
[email protected]
www.laureano.eti.br
Aplicações
Sistema
Operacional
Hardware
1
Plataformas diferentes
Aplicações MacIntosh
MacOS
Aplicações Windows
Aplicações Linux
Windows
Linux
x86
x86
[email protected]
www.laureano.eti.br
Power PC
Incompatibilidade
Aplicações MacIntosh
[email protected]
www.laureano.eti.br
MacOS
Aplicações Windows
Linux
x86
x86
Máquina Virtual
z Cria
uma “camada” para compatibilizar
diferentes plataformas
z Esta “camada” é chamada de
virtualização
[email protected]
www.laureano.eti.br
–
Softwares que podem ser utilizados para
fazer os recursos parecerem diferentes do
que realmente são.
2
Definição de Máquina Virtual
“Uma duplicata eficiente e isolada de uma
máquina real”
z A IBM define uma máquina virtual como uma
cópia totalmente protegida e isolada de um
sistema físico
z Na década de 60, uma abstração de
software que enxerga um sistema físico
(máquina real)
[email protected]
www.laureano.eti.br
z
Máquina Virtual
Aplicações
[email protected]
www.laureano.eti.br
Sistema
Operacional
Máquina Virtual
“Camada” de compatibilidade
Hardware
Máquina Virtual
Aplicações
Linux
Aplicações
Windows
Aplicações
Windows
Camada de hardware virtual
Aplicações
Máquina Virtual
[email protected]
www.laureano.eti.br
Sistema Operacional
Processador Periférico Disco
Disquete
Aplicações
Software
Camada de hardware
físico
3
Emulador
É o oposto da máquina real;
Implementa todas as instruções realizadas
pela máquina real em um ambiente abstrato
de software
z “Engana”, fazendo com que todas as
operações da máquina real sejam
implementadas em um software
z Interpreta um código desenvolvido para
outra plataforma.
z
[email protected]
www.laureano.eti.br
z
Emulador e Máquina Virtual
funcionalidade e o nível de abstração
de uma máquina virtual encontra-se em
uma posição intermediária entre uma
máquina real e um emulador, na forma
em que os recursos de hardware e de
controle são abstraídos e usados pelas
aplicações.
[email protected]
www.laureano.eti.br
zA
Máquina Virtual
É um ambiente criado por um monitor de máquina
virtual;
[email protected]
www.laureano.eti.br
z
4
Virtual Machine Monitor – VMM
[email protected]
www.laureano.eti.br
z Sistema
operacional para sistemas
operacionais;
z Também conhecida como hypervisor;
z O monitor pode criar uma ou mais
máquinas virtuais sobre uma única
máquina real.
VMM e Emulador
Um emulador fornece uma camada de
abstração completa entre o sistema em
execução e o hardware;
z Um monitor fornece uma interface (através
da multiplexação do hardware) que é
idêntica ao hardware subjacente e controla
uma ou mais máquinas virtuais;
z Um emulador também fornece uma
abstração do hardware idêntico ao que está
em uso, mas também pode simular outros
diferentes do atual;
[email protected]
www.laureano.eti.br
z
Abstração e virtualização
[email protected]
www.laureano.eti.br
zA
abstração é uma forma simples
de prover alguns recursos
específicos de hardware para um
software, enquanto a virtualização
provê um conjunto completo de
recursos.
5
Abstração e virtualização
Software
Software
Software
Arquivo
Arquivo
Software
Virtualização
Arquivo
Arquivo
[email protected]
www.laureano.eti.br
Abstração
Tipos de Emuladores
(1ª classificação)
[email protected]
www.laureano.eti.br
z Firmware:
Um firmware pode ser
definido como Programação em
hardware;
z Software: Toda a emulação é feita por
software;
z Combinação ou “emulação combinada”
ou “combo”: O emulador é composto de
hardware e software;
Tipos de Emuladores
(2ª classificação)
[email protected]
www.laureano.eti.br
z Totalmente
baseada em hardware;
z Parcialmente baseado em
hardware;
z Parcialmente baseada em software;
z Totalmente baseada em software.
6
Tipos de Emuladores
De acordo com uso
[email protected]
www.laureano.eti.br
z Emulação
do processador;
z Emulação de um sistema
operacional;
z Emulação de uma plataforma de
(hardware) específico;
z Consoles de videogames.
Tipos de Máquinas Virtuais
z Tipo
–
z Tipo
[email protected]
www.laureano.eti.br
–
I
o monitor é implementado entre o
hardware e os sistemas convidados (guest
system)
II
o monitor é implementado como um
processo de um sistema operacional real
subjacente, denominado sistema anfitrião
(host system)
Tipo I
Aplicação
Convidado
Aplicação
Convidado
[email protected]
www.laureano.eti.br
Monitor
Hardware
7
Tipo II
Aplicação
Aplicação
Sistema convidado
Monitor
Sistema anfitrião
Aplicação
[email protected]
www.laureano.eti.br
Hardware
Abordagens Híbridas
[email protected]
www.laureano.eti.br
z Os
monitores de tipo I e II raramente
são usados em sua forma conceitual
em implementações reais;
z Várias otimizações são inseridas com o
objetivo principal de melhorar o
desempenho das aplicações nos
sistemas convidados
Otimizações em monitores de Tipo I
[email protected]
www.laureano.eti.br
zO
sistema convidado (guest
system) acessa diretamente o
hardware.
z Essa forma de acesso é
implementada através de
modificações no núcleo do sistema
convidado e no monitor.
8
Otimizações em monitores de Tipo I
Aplicação
Aplicação
Sistema Convidado
Sistema Convidado
Monitor
1
1
[email protected]
www.laureano.eti.br
Hardware
Otimizações em monitores de Tipo II
1ª Abordagem
[email protected]
www.laureano.eti.br
zO
sistema convidado (guest
system) acessa diretamente o
sistema anfitrião (host system).
z Essa otimização é implementada
pelo monitor, oferecendo partes da
API do sistema anfitrião ao sistema
convidado.
Otimizações em monitores de Tipo II
1ª Abordagem
Aplicação
Aplicação
Aplicação
Sistema Convidado
Monitor
1
Aplicação
Sistema Anfitrião
[email protected]
www.laureano.eti.br
Hardware
9
Otimizações em monitores de Tipo II
2ª Abordagem
[email protected]
www.laureano.eti.br
zO
sistema convidado (guest system)
acessa diretamente o hardware.
z Essa otimização é implementada
parcialmente pelo monitor e
parcialmente pelo sistema anfitrião,
através de um device driver específico.
Otimizações em monitores de Tipo II
2ª Abordagem
Aplicação
Aplicação
Aplicação
Sistema Convidado
Monitor
2
Aplicação
Sistema Anfitrião
[email protected]
www.laureano.eti.br
Hardware
Otimizações em monitores de Tipo II
3ª Abordagem
[email protected]
www.laureano.eti.br
zO
monitor acessa diretamente o
hardware.
z Neste caso, um device driver
específico é instalado no sistema
anfitrião, oferecendo ao monitor
uma interface de baixo nível para
acesso ao hardware subjacente.
10
Otimizações em monitores de Tipo II
3ª Abordagem
Aplicação
Aplicação
Aplicação
Sistema Convidado
Monitor
Aplicação
Sistema Anfitrião
[email protected]
www.laureano.eti.br
3
Hardware
Formas de Virtualização
[email protected]
www.laureano.eti.br
zÉ
a interposição do software
(máquina virtual) em várias
camadas do sistema.
z É uma forma de dividir os recursos
de um computador em múltiplos
ambientes de execução.
Tipos de Virtualização
[email protected]
www.laureano.eti.br
z Virtualização
do hardware
z Virtualização do sistema
operacional
z Virtualização de linguagens de
programação
11
Virtualização do Hardware
[email protected]
www.laureano.eti.br
z Exporta
o sistema físico como
uma abstração do hardware;
z Qualquer software escrito para a
arquitetura (x86, por exemplo)
irá funcionar.
Virtualização do Hardware
Aplicação Aplicação
Sistema Operacional
(Linux, Windows, Unix)
[email protected]
www.laureano.eti.br
cpu, ram, dispositivos de E/S Virtual
Máquina Virtual
Sistema Operacional (Linux, Windows,
Unix)
cpu, ram, dispositivos de E/S - Real
Virtualização do sistema operacional
[email protected]
www.laureano.eti.br
z Exporta
um sistema operacional
como abstração de um sistema
específicico;
z A máquina virtual roda aplicações –
ou um conjunto de aplicações – de
um sistema operacional específico.
12
Virtualização do sistema operacional
Aplicação Aplicação
Sistema Operacional (Linux,
Windows, Unix) - Virtual
[email protected]
www.laureano.eti.br
Máquina Virtual
Sistema Operacional (Linux, Windows,
Unix)
cpu, ram, dispositivos de E/S - Real
Virtualização de linguagens de
programação
[email protected]
www.laureano.eti.br
z Cria
uma aplicação no topo do sistema
operacional;
z São desenvolvidas para computadores
fictícios projetados para uma finalidade
específica;
z A camada exporta uma abstração para
a execução de programas escritos para
esta virtualização.
Virtualização de linguagens de
programação
Aplicação
[email protected]
www.laureano.eti.br
Máquina Virtual
Sistema Operacional (Linux, Windows,
Unix)
cpu, ram, dispositivos de E/S - Real
13
Poder da Virtualização
zO
uso das máquinas virtuais e
emuladores possibilitam:
Executar um sistema operacional (e suas
aplicações) sobre outro;
– Utilizar uma aplicação de outra plataforma
operacional;
– Executar múltiplos sistemas operacionais;
– Flexibilizar uma plataforma complexa de
trabalho.
[email protected]
www.laureano.eti.br
–
Poder da Virtualização
Aplicação Java
Java Virtual Machine
User-Mode Linux
Linux
[email protected]
www.laureano.eti.br
VMware
Windows
Hardware (x86)
Poder da Virtualização
Apl
Apl
JAIL
JAIL
Aplicação
Mac
Mac OS
FreeBSD
VMware
Aplicação
Aplicação
Linux
JVM
UML
Windows
Aplicação
Windows
QEMU
Linux
XEN
[email protected]
www.laureano.eti.br
Hardware (x86)
14
Outra Classificação para virtualização
[email protected]
www.laureano.eti.br
z Abstração
do ISA (Instruction Set
Architecture);
z Hardware Abstraction Layer (HAL);
z OS Level (sistema operacional);
z Nível de aplicação ou virtualização de
linguagens de programação;
z User level library interface (biblioteca de
interface para usuário).
Abstração do ISA
[email protected]
www.laureano.eti.br
zÉ
implementada através da emulação
completa do ISA;
z O emulador executa as instruções do
sistema convidado através da tradução
das instruções para o sistema nativo.
z Esta arquitetura é simples para
implementação e robusta, mas a perda
de performance é significativa.
Hardware Abstraction Layer
[email protected]
www.laureano.eti.br
zO
monitor simula uma
arquitetura completa para o
sistema convidado;
z O sistema convidado acredita
estar executando sobre um
sistema completo de hardware.
15
OS Level
[email protected]
www.laureano.eti.br
z Obtido
através de uma chamada de
sistema específica;
z A virtualização é obtida para
isolamento;
z Cada sistema virtualizado com seu
próprio endereço IP e outros
recursos de hardware (embora
limitado).
Nível de aplicação ou virtualização de
linguagens de programação
É obtido através da abstração de uma
“camada de execução”;
z Uma aplicação utiliza esta camada para
executar as instruções do programa;
z Garante que uma aplicação pode ser
executada em qualquer plataforma de
software ou hardware, pois a camada é
abstraída de forma idêntica em todas as
plataformas;
[email protected]
www.laureano.eti.br
z
–
mas requer uma máquina virtual específica para
cada plataforma
User level library interface
[email protected]
www.laureano.eti.br
zÉ
obtida através da abstração
do topo do sistema operacional
para que as aplicações possam
executar em outra plataforma.
z API do Windows.
16
Técnicas de virtualização e emulação
[email protected]
www.laureano.eti.br
z Virtualização
total (full
virtualization)
z Paravirtualização
(paravirtualization)
z Re-compilação dinâmica
(dynamic recompilation)
Virtualização total
[email protected]
www.laureano.eti.br
z Uma
estrutura completa de hardware é
virtualizado;
z Sistema convidado não precisa sofrer
qualquer tipo de alteração;
z Grande compatibilidade;
z Perda de velocidade.
Virtualização total
0000
00FF
0FFF
0000
[email protected]
www.laureano.eti.br
Memória
Real
FFFF
000F
Memória
Virtual
Espaço reservado pela máquina
virtual para o sistema convidado.
17
Paravirtualização
[email protected]
www.laureano.eti.br
zO
sistema que vai ser virtualizado
(sistema convidado) sofre
modificações para que a interação
com o monitor de máquinas virtuais
seja mais eficiente;
z Perda de compatibilidade;
z Ganho de velocidade.
Re-compilação dinâmica
1. Agrupamento de bits: Usando o
conhecimento sobre o formato do executável
e técnicas heurísticas, conjuntos de bits são
recuperados do executável e re-ordenados;
z 2. Desmontagem (disassembling): Os bits
são desmontados e transformados para um
conjunto de instruções e operadores
ordenados em pares;
[email protected]
www.laureano.eti.br
z
Re-compilação dinâmica
[email protected]
www.laureano.eti.br
zÉ
explorando informações
que normalmente não estão
disponíveis para um
compilador estático
tradicional.
18
Re-compilação dinâmica
[email protected]
www.laureano.eti.br
z 3.
Geração intermediária do código:
As instruções são transformadas
para uma representação de
máquina independente;
z 4. Decompilação: A representação
gerada é transformada em uma
linguagem de alto nível (como o
código na linguagem C);
Re-compilação dinâmica
[email protected]
www.laureano.eti.br
z 5.
Compilação: O código gerado é
novamente compilado para a nova
plataforma;
z 6. Montagem (assembling): Os códigos
são novamente montados;
z 7. Armazenagem dos bits: Os bits são
são agrupados de forma a gerar o novo
executável.
Propriedades de monitores de
máquinas virtuais
z Isolamento
z Inspeção
z Interposição
z Eficiência
[email protected]
www.laureano.eti.br
z Gerenciabilidade
z Compatibilidade
do software
z Encapsulamento
z Desempenho
19
Isolamento
[email protected]
www.laureano.eti.br
z Um
software em execução em
uma máquina virtual não acessa
ou modifica outro software em
execução no monitor ou em
outra máquina virtual.
Inspeção
[email protected]
www.laureano.eti.br
zO
monitor tem acesso e
controle sobre todas as
informações do estado da
máquina virtual, como estado
da CPU, conteúdo de
memória, eventos, etc.
Interposição
[email protected]
www.laureano.eti.br
zO
monitor pode intercalar ou
acrescentar instruções em certas
operações de uma máquina virtual,
como por exemplo, quando da
execução de instruções
privilegiadas por parte da máquina
virtual.
20
Eficiência
[email protected]
www.laureano.eti.br
zInstruções
inofensivas podem
ser executadas diretamente
no hardware, pois não irão
afetar outras máquinas
virtuais ou aplicações.
Gerenciabilidade
[email protected]
www.laureano.eti.br
zComo
cada máquina virtual é
uma entidade independente
das demais, a administração
das diversas instâncias é
simplificada e centralizada.
Compatibilidade do software
[email protected]
www.laureano.eti.br
zA
máquina virtual fornece
uma abstração compatível
de modo que todo o
software escrito para ela
funcione.
21
Encapsulamento
[email protected]
www.laureano.eti.br
z Esta
camada pode ser usada para
manipular e controlar a execução
do software na máquina virtual.
z Pode também usar esta ação
indireta para dar prioridade ao
software ou fornecer um ambiente
melhor para execução.
Desempenho
[email protected]
www.laureano.eti.br
z Adicionar
uma camada de software
a um sistema pode afetar o
desempenho do software que
funciona na máquina virtual, mas os
benefícios proporcionados pelo uso
de sistemas virtuais compensam a
perda de desempenho.
Benefícios ao utilizar máquinas
virtuais (1)
[email protected]
www.laureano.eti.br
z Facilitar
o aperfeiçoamento e testes
de novos sistemas operacionais;
z Auxiliar no ensino prático de
sistemas operacionais e
programação ao permitir a
execução de vários sistemas para
comparação no mesmo
equipamento;
22
Benefícios ao utilizar máquinas
virtuais (2)
[email protected]
www.laureano.eti.br
z Executar
diferentes sistemas
operacionais sobre o mesmo hardware,
simultaneamente;
z Simular configurações e situações
diferentes do mundo real, como por
exemplo, mais memória disponível ou a
presença de outros dispositivos de E/S;
Benefícios ao utilizar máquinas
virtuais (3)
[email protected]
www.laureano.eti.br
z Simular
alterações e falhas no
hardware para testes ou reconfiguração de um sistema
operacional, provendo confiabilidade e
escalabilidade para as aplicações;
z Garantir a portabilidade das aplicações
legadas (que executariam sobre uma
máquina virtual simulando o sistema
operacional original);
Benefícios ao utilizar máquinas
virtuais (4)
[email protected]
www.laureano.eti.br
z Desenvolvimento
de novas
aplicações para diversas
plataformas, garantindo a
portabilidade destas aplicações;
z Diminuição de custos com
hardware, através da consolidação
de servidores;
23
Benefícios ao utilizar máquinas
virtuais (5)
[email protected]
www.laureano.eti.br
z Facilidades
no gerenciamento,
migração e replicação de
computadores, aplicações ou
sistemas operacionais;
z Prover um serviço dedicado para
um cliente específico com
segurança e confiabilidade.
Dificuldades para o uso de máquinas
virtuais
[email protected]
www.laureano.eti.br
zProcessador
não Virtualizado;
zDiversidade de
equipamentos;
zPré-existência de softwares.
Futuro – CPU
[email protected]
www.laureano.eti.br
z AMD
e Intel anunciaram
tecnologias (Pacifica e
Vanderpool respectivamente)
para que a virtualização sobre a
plataforma x86 ocorra de
formais mais natural e tranqüila.
24
Futuro – Memória
[email protected]
www.laureano.eti.br
z Várias
técnicas tem permitido que a
virtualização da memória seja mais
eficiente. Pesquisas futuras devem
levar aos sistemas operacionais
convidados a gerenciar a memória
juntamente com o monitor de máquinas
virtuais (gerência cooperativa).
Futuro – E/S
[email protected]
www.laureano.eti.br
z Os
dispositivos de E/S serão
projetados para fornecer suporte a
virtualização através de devices de
alta-performance. A
responsabilidade pelo acesso aos
dispositivos deverá passar do
monitor para o sistema convidado.
Então....
?
z Perguntas ?
z Sugestões ?
[email protected]
www.laureano.eti.br
z Dúvidas
25
Download

Aplicações Hardware Sistema Operacional