Máquina virtual
Execução de Programa |
---|
Conceitos gerais |
Tipos de código |
Estratégia de compilação |
|
Runtimes notáveis |
|
Compiladores notáveis e toolchain |
|
Na ciência da computação, máquina virtual consiste em um software de ambiente computacional que executa programas como um computador real, também chamado de processo de virtualização.
Uma máquina virtual (Virtual Machine – VM) pode ser definida como “uma duplicata eficiente e isolada de uma máquina real”. A IBM define uma máquina virtual como uma cópia isolada de um sistema físico, e esta cópia está totalmente protegida.
Máquinas virtuais são extremamente úteis no dia a dia, pois permitem ao usuário rodar outros sistemas operacionais dentro de uma única máquina física, tendo acesso a outros software existentes que podem ser instalados dentro da própria máquina virtual.
História
VM ou VM/CMS, do inglês Virtual Machine/Conversational Monitor System [1] é um sistema operativo que permite a vários utilizadores trabalharem ao mesmo tempo como se estivessem a utilizar sozinhos o computador. O sistema foi empregue na IBM mainframes System/360, donde VM/360, em 1964 - História do Mainframe [2].
O sistema VM é usado nos mainframes - computadores de grande capacidade capazes de oferecer serviços de processamento a milhares de usuários através de milhares de terminais conectados diretamente ou através de uma rede. O sistema operava unicamente em modo batch (arquivo de lote).
O programa de controle (CP) gerencia o computador e efetua todas as operações necessárias de tal forma que cada máquina virtual reaja e trabalhe como um computador pessoal. O utilizador tinha em frente de si unicamente: um écran, um teclado, e a caixa de ligação com mainframe.
Definição
O termo máquina virtual foi descrito na década de 1960 utilizando um termo de sistema operacional: uma abstração de software que enxerga um sistema físico (máquina real). Com o passar dos anos, o termo englobou um grande número de abstrações – por exemplo, Java Virtual Machine – JVM que não virtualiza um sistema real.
Ao invés de ser uma máquina real, isto é, um computador real feito de hardware e executando um sistema operacional específico, uma máquina virtual é um computador fictício criado por um programa de simulação. Sua memória, processador e outros recursos são virtualizados. A virtualização é a interposição do software (máquina virtual) em várias camadas do sistema. É uma forma de dividir os recursos de um computador em múltiplos ambientes de execução.
Ultimamente, é muito simples e fácil criar uma máquina virtual: basta apenas instalar um programa específico dentro da máquina real, onde dentro desse programa poderá ser criado um disco rígido virtual e a partir disso, será possível executar um sistema operacional inteiro por meio dele.
Entre os programas que simulam essas máquinas, são bastante conhecidos os emuladores de vídeo games antigos e os emuladores de microcomputadores, como o VMware Player e o Bochs.
Apesar de alguns desses programas serem pagos, existem também softwares livre de fácil acesso, que é o caso do VM VirtualBox (software livre da Oracle).
Funcionamento
Após a instalação do programa para criação da máquina virtual, é possível criar um disco rígido virtual, e a partir disso, é possível executar um sistema operacional inteiro.
A máquina virtual irá alocar, durante a execução de sistemas operacionais, uma quantidade definida de memória RAM. Ela normalmente emula um ambiente de computação física, mas requisições de CPU, memória, disco rígido, rede e outros recursos de hardware serão todos geridos por uma "camada de virtualização" que traduz essas solicitações para o hardware presente na máquina.
A partir disso, é possível a instalação de outros softwares dentro do presente software, fazendo simulações em geral sem a necessidade um hardware específico.
Uso para teste
O conceito de VM também pode ser utilizado como máquinas virtuais a efeito de testes, ou seja, quando empresas de desenvolvimento desejam testar seus produtos ou até mesmos administradores de redes, sistemas pretendem montar protótipos e projetos futuros.
Caso se trate de uma pequena e média empresa onde os recursos são reduzidos, podemos utilizar o Conceito de VM, para que um servidor de arquivos além de armazenar dados, também possua uma outra tarefa como por exemplo instalação de um (Servidor Jabber "comunicação", servidor CUPS "impressão" e até mesmo um Postfix "correio eletrônico").
Tipos
As máquinas virtuais podem ser divididas em três tipos:
- Tipo 1: Sistema em que o monitor é implementado entre o hardware e os sistemas convidados (guest system), onde o monitor tem controle sobre o hardware e abre sessões (convidados) para criação de máquinas virtuais semelhantes ao sistema operacional tradicional.
- Tipo 2: Nele o monitor é implementado como um processo de um sistema operacional real, denominado sistema anfitrião (host system), onde o monitor é executado como um Processo por um Sistema Anfitrião, ou seja, um sistema gerencia o acesso do hardware ao monitor, que por sua vez cria máquinas virtuais assim como descrito no Tipo 1.
- Tipo 3: Utiliza os 2 conceitos do Tipo 1 e Tipo 2 ao mesmo tempo. Em resumo é a capacidade da máquina virtual (sistema convidado) de acessar diretamente o hardware, sem ter que passar todas informações ao monitor toda vez que desejar acessar algum dispositivo/hardware.
- Tipos Híbridos: Os monitores de tipo 1 e 2 raramente são usados em sua forma conceitual em implementações reais. Na prática, várias otimizações são inseridas nas arquiteturas apresentadas, com o objetivo principal de melhorar o desempenho das aplicações nos sistemas convidados. Como os pontos cruciais do desempenho dos sistemas de máquinas virtuais são as operações de E/S, as principais otimizações utilizadas em sistemas de produção dizem respeito a essas operações.
Outra importante categoria de máquinas virtuais são as máquinas virtuais para computadores fictícios projetados para uma finalidade específica. Atualmente a mais importante máquina virtual desta família é a JVM (máquina virtual Java). Existem simuladores para ela em quase todos os computadores atuais, desde computadores de grande porte até telefones celulares, o que torna as aplicações Java extremamente portáveis.
Uma importante vantagem sem duvida de se escrever código para uma máquina virtual é a de se poder compilar o código sem que seja perdida a portabilidade, melhorando-se a velocidade em relação à programação interpretada, que também é portátil, porém mais lenta, já que neste caso cada linha será traduzida e executada em tempo de execução, e no caso da máquina virtual cada mnemônico da máquina virtual é convertido no equivalente em linguagem de máquina (ou assembly) da máquina real.
Vantagens
- Facilita o aperfeiçoamento e testes de novos sistemas operacionais.
- Possibilita a comparação de vários sistemas operacionais utilizando o mesmo equipamento.
- Executa diferentes sistemas operacionais sobre o mesmo hardware, simultaneamente.
- Simula alterações e falhas no hardware para testes ou reconfiguração de um sistema operacional, provendo confiabilidade e escalabilidade para as aplicações.
- Diminuição de custos com hardware.
- Facilidades no gerenciamento, migração e replicação de computadores, aplicações ou sistemas operacionais.
- Confiança e disponibilidade: A falha de um software não prejudica os demais serviços.
- O isolamento da máquina virtual assegura que as aplicações e serviços que serão executados dentro de uma máquina virtual não poderão interferir no sistema operacional original e nem em outras máquinas virtuais.
- Pode ser facilmente deslocadas, copiadas e transferidas entre computadores, possibilitando aperfeiçoar os recurso do hardware.
- Teste de diversos sistemas operacionais sem precisar particionar o HD, podendo instalar versões antigas do Windows, Linux, ou qualquer outro sistema sem fazer alterações no disco rígido.
Desvantagens
- Gerenciamento: Os ambientes virtuais necessitam ser, monitorados, configurados e salvos . Existem produtos que fornecem essas soluções, mas esse é o campo no qual estão os maiores investimentos na área de virtualização, justamente por se tratar de um dos maiores contratempos na implementação da virtualização.
- Desempenho: Atualmente, não existem métodos consolidados para medir o desempenho de ambientes virtualizados. No entanto, a introdução de uma camada extra de software entre o sistema operacional e o hardware, o VMM ou hypervisor, gera um custo de processamento superior ao que se teria sem a virtualização. Outro ponto importante de ressaltar é que não se sabe exatamente quantas máquinas virtuais podem ser executadas por processador, sem que haja o prejuízo da qualidade de serviço.
- Enorme uso da memória da maquina real, depois de uma grande tempo de estar em modo ligada. Isso ocasiona lentidão para o usuário que está utilizando.
Segurança
Embora a máquina necessite do sistema real para sua inicialização, trabalha de maneira independente como se fosse outro computador, isto requer também um sistema de segurança independente, ou seja, a ocorrência de infecção por vírus na máquina virtual não afeta a máquina real.
Em geral o conceito sobre máquinas virtuais vem crescendo, não só pela performance apresentada nos resultados, mas pelo custo reduzido de hardware e manutenção, o que facilita muito o uso desses softwares.
Ver também
Referências
- ↑ «Utilisação de Conversational Monitor System (CMS) & IBM». Consultado em 20 de setembro de 2011. Arquivado do original em 12 de janeiro de 2012
- ↑ - CERN Document Server
Bibliografia
- Marcos Laureano, Máquinas Virtuais e Emuladores - Conceitos, Técnicas e Aplicações. Novatec Editora. ISBN 85-7522-098-5.
- Marcos Laureano, Detecção de Intrusão em Máquinas Virtuais. Dissertação de mestrado apresentada na Pontifícia Universidade Católica do Paraná.
- Marcos Laureano, Carlos Maziero, Virtualização: Conceitos e Aplicações em Segurança. Mini-curso do VIII Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais, 2008.
- Diogo Menezes Ferrazani Mattos, Vantagens e Desvantagens.
- Fernando Ulisses dos Santos, [https://web.archive.org/web/20190205095753/https://www.bluesolutions.com.br/2014/07/o-que-e-uma-maquina-virtual/ O que é uma máquina virtual?