Surge con el sistema VM/370 de IBM en 1972. La idea principal es la de permitir ejecutar varios sistemas operativos simultáneamente sobre el mismo hardware. Para ello, separa las dos funciones básicas que realiza un sistema de tiempo compartido: multiprogramación y abstracción del hardware. El corazón del sistema es conocido como monitor de máquina virtual, y se ejecuta sobre el hardware proporcionando varias máquinas virtuales al siguiente nivel de software. Estas máquinas virtuales, son copias exactas del hardware . Por esto, cada una puede estar ejecutando cualquier sistema operativo. También ha sido llevada esta idea de máquina virtual a lenguajes de programación como Java.
Definición.
Una máquina virtual es un software que simula una computadora dentro de la propia computadora donde es instalado. Este ejecuta programas como si se tratase de la computadora donde se instalo . Suele usarse para varios objetivos ,aunque el mas común de ellos entre usuarios comunes es el de "probar"de sistemas operativos,sin tener que cambiar el que utilizan habitualmente.
Tipos de máquinas virtuales
Las máquinas virtuales se dividen en dos clasificaciones principales, en función de su uso y el grado de correspondencia a cualquier máquina real,ellas son;
Máquinas virtuales de sistemas( System Virtual Machine)
Máquinas virtuales de proceso(Process Virtual Machine)
Máquinas virtuales de sistema.
Las máquinas virtuales de alivio sistema, también se les llama
máquinas virtuales de hardware,permiten a la máquina física multiplexarse(se le asigna un quantum de tiempo) 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").
Sus aplicaciones son variadas.
Varios sistemas operativos distintos pueden coexistir sobre la misma computadora,sin necesidad de instalarlos.
La MV 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 SO 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 la instalaciones necesarias para mantener los servicios, dado que permiten ahorrar en hardware.
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 SO y soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del SO, que oculte los detalles dela plataforma inferior y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma.Un ejemplo conocido actualmente de este tipo de MV es la máquina virtual de Java. Otra máquina virtual conocida es la del entorno .Net de Microsoft que se llama "Common Language Runtime.
Ventajas de Maquinas Virtuales
Algunas de sus ventajas son;
.Múltiples entornos de sistemas operativos pueden coexistir en el mismo equipo, en forma aislada fuerte el uno del otro.
.La máquina virtual puede proporcionar una arquitectura de conjunto de instrucciones que es algo diferente de la de la máquina real:
.Distribución de aplicaciones, mantenimiento, alta disponibilidad y recuperación ante problemas.
.Las máquinas virtuales tienen otras ventajas para el desarrollo operativo, incluyendo un mejor acceso a la depuración y reinicio rápidos.
Desventajas de Maquinas Virtuales.
Las principales desventajas de las máquinas virtuales son:
.Una máquina virtual es menos eficiente que una máquina real cuando se accede al hardware indirectamente.
.Cuando varias máquinas virtuales simultáneamente se ejecutan en el mismo host físico, cada máquina virtual puede presentar una diferentes capacidades y un rendimiento inestable, que depende de la carga de trabajo que se le impuso al sistema por otras máquinas virtuales, a menos que se utilice las técnicas adecuadas para el aislamiento temporal entre las máquinas virtuales.
Técnicas
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 mono-usuario 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 hipotéticamente no lo soportaría.
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.
Open Firmware
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
Consiste en dividir una computadora en varios compartimentos independientes de manera que en cada compartimento se pueda 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. Por ejemplo las zonas de Solaris (Solaris Zones) y la técnica de Micro Partioning de AIX.