Existen sistemas que pueden ser emulados por un ordenador con relativa facilidad: una máquina recreativa "arcade" (1), un dispositivo móvil (2), etc. Sin embargo, lo más ambicioso es emular un ordenador completo y que la máquina virtual que ejecutemos sea utilizable (que no sea extremadamente lenta, que pueda ejecutar un sistema operativo más o menos moderno con fluidez, ....)
Hoy en día esto es posible y existen muchos productos, (los hay comerciales, gratuitos y de código abierto [ver enlaces]) que dan un rendimiento excelente, siendo posible ejecutar varios sistemas operativos simultáneamente con un rendimiento bastante decente.
En estas configuraciones existe un sistema operativo "anfitrión" que ejecuta el programa de emulación o virtualización. Este programa se encarga de crear "máquinas virtuales", cada una con sus propias características (memoria RAM, disco duro, procesador, dispositivos, etc) que pueden ejecutar su propio sistema operativo ("huésped") y programas (3).
¿Para qué sirve tener un ordenador corriendo "dentro" de otro ordenador?
Las aplicaciones son numerosas, enumero algunas de las más típicas:
- Probar programas en distintos sistemas.
Existen muchos lenguajes y herramientas de programación que pueden ejecutarse en distintos sistemas operativos ("cross-platform"). Es vital probar cómo se ven estos programas, ya que cada sistema funciona diferente en la gestión de ventanas, tamaño de los elementos visuales (botones, menús, fuentes), etc.
Teniendo varios sistemas virtualizados se puede probar el mismo programa sin necesidad de tener varios ordenadores diferentes o reiniciar el ordenador con otro sistema operativo.
En la siguiente captura de pantalla (4) se muestra el típico programa de ejemplo (una ventanita que dice "¡Hola, mundo!") en los sistemas operativos MacOSX (anfitrión), Linux y Windows (huéspedes). - Centros de soporte a usuarios.
Cuando se distribuye un programa, aunque esté diseñado para funcionar sobre sólo un sistema operativo, se pueden encontrar múltiples combinaciones de versiones, actualizaciones, parches, etc. Por ejemplo, podemos tener sistemas Windows XP con diferentes "Service Pack", diferentes versiones de Internet Explorer, algunos con la versión "Home Edition", otros con la "Professional", etc.
Se puede tener un conjunto de máquinas virtuales con todas las combinaciones posibles y probar los programas en estas configuraciones con suma facilidad. - Servidores dedicados.
Cada vez es más frecuente que se ofrezcan servidores dedicados que realmente son una máquina virtual corriendo sobre un servidor real. Al usuario que contrata este servidor dedicado la impresión que le queda es que tiene una máquina para su uso exclusivo, sin embargo, la máquina "real" es compartida por más usuarios, cada uno con su máquina virtual. - Evitar reinicios y/o cambios de ordenador.
Existen programas que sólo se ejecutan sobre un sistema operativo. Si disponemos de una máquina virtual con este sistema y el programa en cuestión instalados, podemos trabajar habitualmente con nuestro sistema preferido y arrancar la máquina virtual cuando necesitemos el programa en cuestión.
No siempre esto es posible, puede que este programa requiera muchos recursos y no funcione bien en una máquina virtual, o que necesite un controlador de vídeo específico, etc, pero en muchos casos, es una solución viable. Las máquinas virtuales se pueden ejecutar a pantalla completa y su velocidad es bastante buena en muchos casos (5).
¿Algún lector nos puede poner más usos y ejemplos? Si tienen alguna captura de pantalla puedo incorporarla a esta entrada.
Captura 1: emulación de una máquina recreativa arcade. El programa emulador es MAME.
Captura 2: emulación de un teléfono móvil. El programa es el entorno de desarrollo Netbeans.
Captura 3: un ordenador con MacOSX (anfitrión) ejecutando dos máquinas virtuales (huéspedes) corriendo Linux y Windows (pulsar para ver a pantalla completa).
Captura 4: el típico "¡Hola, mundo!" en tres sistemas operativos diferentes (pulsar para ver a pantalla completa).
Captura 5: se muestra una sesión de trabajo en la que un anfitrión Linux ejecuta una máquina virtual Windows, a pantalla parcial y pantalla completa.
Enlaces:
VMware: ofrece varios productos, unos gratuitos (VMware Player) y otros comerciales.
VirtualBox, Qemu, Bochs, Xen: gratuitos y de código abierto.