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