Máquina virtual
Arquitectura típica de una máquina virtual.
VirtualBox
En informática una máquina virtual es un software que simula un sistema de computación y puede
ejecutar programas como si fuese una computadora real. Este software en un
principio fue definido como "un duplicado eficiente y aislado de una
máquina física". La acepción del término actualmente incluye a máquinas
virtuales que no tienen ninguna equivalencia directa con ningún hardware real.
Una
característica esencial de las máquinas virtuales es que los procesos que
ejecutan están limitados por los recursos y abstracciones
proporcionados por ellas. Estos procesos no pueden escaparse de esta
"computadora virtual".
Uno de los usos
domésticos más extendidos de las máquinas virtuales es ejecutar
sistemas operativos para "probarlos". De esta forma podemos
ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo)
desde nuestro sistema operativo habitual (Mac OS X por ejemplo) sin necesidad
de instalarlo directamente en nuestra computadora y sin miedo a que se
desconfigure el sistema operativo primario.
Tipos de máquinas virtuales
Funcionamiento de la máquina virtual de Java, una de las máquinas virtuales de proceso más populares.
Funcionamiento
de VMWare, una de las máquinas virtuales de sistema más populares.
Las máquinas
virtuales se pueden clasificar en dos grandes categorías según su funcionalidad
y su grado de equivalencia a una verdadera máquina.
·
Máquinas
virtuales de sistema (en inglés
System Virtual Machine)
·
Máquinas
virtuales de proceso (en inglés
Process Virtual Machine)
Máquinas
virtuales de sistema
Las máquinas
virtuales de sistema, también llamadas máquinas virtuales de hardware,
permiten a la máquina física subyacente multiplicarse entre varias máquinas
virtuales, cada una ejecutando su propio sistema
operativo. A la capa de software que permite la
virtualización se la llama monitor de máquina virtual o hypervisor. Un monitor de máquina virtual puede ejecutarse o bien
directamente sobre el hardware o
bien sobre un sistema operativo ("host operating system").
Aplicaciones
de las máquinas virtuales de sistema
·
Varios sistemas
operativos distintos pueden coexistir sobre la misma
computadora, en sólido aislamiento el uno del otro, por ejemplo para probar un
sistema operativo nuevo sin necesidad de instalarlo directamente.
·
La máquina
virtual puede proporcionar una arquitectura de instrucciones (ISA) que sea algo distinta de la verdadera máquina. Es
decir, podemos simular hardware.
·
Varias máquinas
virtuales (cada una con su propio sistema operativo llamado sistema operativo
"invitado" o "guest"), pueden ser utilizadas para consolidar
servidores. Esto permite que servicios que normalmente se tengan que
ejecutar en computadoras distintas para evitar interferencias, se puedan
ejecutar en la misma máquina de manera completamente aislada y compartiendo los
recursos de una única computadora. La consolidación de servidores a menudo
contribuye a reducir el coste total de las instalaciones necesarias para
mantener los servicios, dado que permiten ahorrar en hardware.
·
La virtualización
es una excelente opción hoy día, ya que las máquinas actuales (Laptops,
desktops, servidores) en la mayoría de los casos están siendo
"sub-utilizados" (gran capacidad de disco duro, memoria RAM, etc.), llegando a un uso de entre 30% a
60% de su capacidad. Al virtualizar, la necesidad de nuevas máquinas en una ya
existente permite un ahorro considerable de los costos asociados (energía, mantenimiento,
espacio, etc).
Máquinas
virtuales de proceso
Una máquina
virtual de proceso, a veces llamada "máquina virtual de
aplicación", se ejecuta como un proceso normal dentro de un sistema
operativo y soporta un solo proceso. La máquina se inicia automáticamente
cuando se lanza el proceso que se desea ejecutar y se detiene para cuando éste
finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente
de la plataforma de hardware y del sistema operativo, que oculte los
detalles de la plataforma subyacente y permita que un programa se ejecute
siempre de la misma forma sobre cualquier plataforma.
El ejemplo más
conocido actualmente de este tipo de máquina virtual es la máquina
virtual de Java. Otra máquina virtual muy conocida
es la del entorno .Net de Microsoft que se llama "Common Language
Runtime".
Inconvenientes de las máquinas virtuales
Uno de los
inconvenientes de las máquinas virtuales es que agregan gran complejidad al
sistema en tiempo de ejecución. Esto tiene como efecto la ralentización del
sistema, es decir, el programa no alcanzará la misma velocidad de ejecución que
si se instalase directamente en el sistema operativo "anfitrión"
(host) o directamente sobre la plataforma de hardware. Sin embargo, a menudo la
flexibilidad que ofrecen compensa esta pérdida de eficiencia.
Técnicas
Monitor de tipo I.
Monitor
de tipo II.
Emulación
del hardware subyacente (ejecución nativa)
Esta técnica se
suele llamar virtualización completa
(full virtualization) del hardware, y se puede implementar usando un hypervisor de Tipo 1 o de Tipo 2:
·
el tipo
1 se ejecuta directamente sobre el hardware.
·
el tipo
2 se ejecuta sobre otro sistema operativo.
Cada máquina
virtual puede ejecutar cualquier sistema operativo soportado por el hardware
subyacente. Así los usuarios pueden ejecutar dos o más sistemas operativos
distintos simultáneamente en computadoras "privadas" virtuales.
El sistema
pionero que utilizó este concepto fue la CP-40,
la primera versión (1967) de la CP/CMS de IBM (1967-1972) y el precursor
de la familia VM de IBM (de 1972 en adelante). Con la arquitectura VM, la mayor
parte de usuarios controlan un sistema operativo monousuario relativamente
simple llamado CMS que se ejecuta en la máquina virtual VM.
Actualmente
tanto Intel como AMD han
introducido prestaciones a sus procesadores x86 para
permitir la virtualización de hardware.
Emulación
de un sistema no nativo
Las máquinas
virtuales también pueden actuar como emuladores de hardware, permitiendo que aplicaciones
y sistemas operativos concebidos para otras arquitecturas de procesador se
puedan ejecutar sobre un hardware que en teoría no soportan.
Algunas máquinas
virtuales emulan hardware que sólo existe como una especificación. Por ejemplo:
·
La máquina virtual P-Code que
permitía a los programadores de Pascal crear
aplicaciones que se ejecutasen sobre cualquier computadora con esta máquina
virtual correctamente instalada.
·
La máquina virtual de
Java.
·
La máquina
virtual del entorno .NET.
Esta técnica
permite que cualquier computadora pueda ejecutar software escrito para la
máquina virtual. Sólo la máquina virtual en sí misma debe ser portada a cada
una de las plataformas de hardware.
Virtualización
a nivel de sistema operativo
Esta técnica
consiste en dividir una computadora en varios compartimentos independientes de
manera que en cada compartimento podamos instalar un servidor. A estos
compartimentos se los llama "entornos virtuales". Desde el punto de
vista del usuario, el sistema en su conjunto actúa como si realmente existiesen
varios servidores ejecutándose en varias máquinas distintas. Dos ejemplos son
las zonas de Solaris (Solaris Zones)
y la técnica de Micro Partioning de AIX.
Lista de hardware con soporte para
virtualización
·
Boston Circuits
gCore (grid-on-chip) con núcleos 16 ARC 750D y módulo de virtualización de
hardware Time-machine.
·
Intel VT (anteriormente llamado Vanderpool)
·
SPARC de Sun Microsystems






No hay comentarios:
Publicar un comentario