Máquinas Virtuais

 

Definição


O conceito de máquinas virtuais foi originalmente definido por Popek e Goldberg como "uma duplicata eficiente e isolada da máquina real" e, basicamente, se trata de uma máquina implementada através de software capaz de executar software da mesma forma que um computador real.


Já a IBM a define pelo conceito de isolamento e proteção, enxergando a Máquina Virtual como uma cópia isolada e protegida de um sistema físico.


Hoje em dia utilizam VMs (do inglês Virtual Machines) para várias aplicações, mas iremos explorar as relativas a execução de mais de um sistema operacional em uma máquina.



Aplicações


A utilização de máquinas virtuais proporciona um isolamento de camadas muito útil para gerentes de rede e provedores de serviço. Em cenários típicos onde temos um data center com várias máquinas reais rodando diferentes programas, podemos ter as seguintes configurações:


  1. 1)Uma máquina, um sistema operacional e vários programas.




Problemas:

  1. Os programas podem competir desonestamente por recursos de hardware, afetando o desempenho dos demais.

  2. Somente um sistema operacional pode não atender os requisitos de vários programas. Por exemplo: Certos programas podem rodar em Windows e outros em Linux.

  3. Se um programa causar uma falha no sistema operacional, todos os outros serão afetados.


  1. 2)Várias máquinas


 


Problemas:

  1. Alto custo com hardware e energia. Possui também alta dissipação de calor que pode implicar em mais gastos com refrigeração.


  1. 3)Utilizando uma máquina física rodando várias máquinas virtuais




Ao empregar VMs, podemos ter grandes ganhos na redução dos gastos com hardware, energia e espaço. A figura acima demonstra a utilização de um sistema virtualizado, e o item intermediário entre os sistemas operacionais e o hardware será visto na próxima seção.


Já para os desenvolvedores de software a utilização de VMs se mostra interessante para os seguintes cenários:


  1. Ambiente de Testes: Máquinas virtuais proporcionam ambientes controlados e fáceis de replicar para a execução de testes de software.


  1. Executar vários Sistemas Operacionais simultaneamente: Muito utilizado por quem realiza desenvolvimento de software multi-plataforma.


Os emuladores, tipicamente conhecidos por executar jogos de video-games nos computadores,  também são considerados máquinas virtuais, pois eles replicam via software a arquitetura de hardware dos consoles ou microcomputadores e são capazes de executar software.