Naciência da computação,máquina virtual consiste em umsoftware de ambiente computacional que executa programas como um computador real, também chamado de processo devirtualização.
Uma máquina virtual (Virtual Machine – VM) pode ser definida como “uma duplicata eficiente e isolada de uma máquina real”. AIBM 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.
VM ou VM/CMS, do inglêsVirtual Machine/Conversational Monitor System[1] é umsistema operativo que permite a vários utilizadores trabalharem ao mesmo tempo como se estivessem a utilizarsozinhos o computador. O sistema foi empregue naIBM mainframes System/360, dondeVM/360, em 1964 -História do Mainframe[2].
IBM 704
O sistema VM é usado nosmainframes - 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 emmodo batch (arquivo de lote).
O programa de controle (CP) gerencia o computador e efetua todas as operações necessárias de tal forma que cadamáquina virtual reaja e trabalhe como um computador pessoal. O utilizador tinha em frente de si unicamente: umécran, umteclado, e a caixa de ligação com mainframe.
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 oVMware Player e oBochs.
Apesar de alguns desses programas serem pagos, existem também softwares livre de fácil acesso, que é o caso do VMVirtualBox (software livre daOracle).
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 dememória RAM. Ela normalmente emula um ambiente de computação física, mas requisições deCPU,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.
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").
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 umSistema 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 é aJVM (máquina virtualJava). 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 cadamnemônico da máquina virtual é convertido no equivalente em linguagem de máquina (ouassembly) da máquina real.
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.
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 ouhypervisor, 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.
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.