Máquina virtual

software que simula um computador
(Redirecionado de VM/CMS)

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.

VirtualBox 6.1.14 no Kubuntu rodando o Fedora 33

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 editar

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].

 
IBM 704

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 editar

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 editar

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 editar

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 editar

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 editar

  • 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 editar

  • 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 editar

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 editar

Referências

  1. «Utilisação de Conversational Monitor System (CMS) & IBM». Consultado em 20 de setembro de 2011. Arquivado do original em 12 de janeiro de 2012 
  2. - CERN Document Server

Bibliografia editar

Notas

  Este artigo sobre informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.