Máquinas virtuales

De EcuRed
Máquinas virtuales
Información sobre la plantilla
200
Concepto:Es un contenedor de software perfectamente aislado que puede ejecutar sus propios sistemas operativos y aplicaciones como si fuera un ordenador físico.

Máquinas virtuales. La idea principal de las Máquinas Virtuales 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 desnudo. Por esto, cada una puede estar ejecutando cualquier sistema operativo. Recientemente, ha surgido VMWare, de forma que un usuario puede estar ejecutando sistemas como Windows NT y Linux de forma simultánea. También ha sido llevada esta idea de máquina virtual a lenguajes de programación como Java.

Contenido

Definición

Una máquina virtual es un contenedor de software perfectamente aislado que puede ejecutar sus propios sistemas operativos y aplicaciones como si fuera un ordenador físico. Una máquina virtual se comporta exactamente igual que lo hace un ordenador físico y contiene sus propios CPU, RAM, disco duro y tarjetas de interfaz de red (NIC) virtuales (es decir, basados en software). El sistema operativo no puede establecer una diferencia entre una máquina virtual y una máquina física, ni tampoco lo pueden hacer las aplicaciones u otros ordenadores de una red. Incluso la propia máquina virtual considera que es un ordenador “real”. Sin embargo, una máquina virtual se compone exclusivamente de software y no contiene ninguna clase de componente de hardware. El resultado es que las máquinas virtuales ofrecen una serie de ventajas con respecto al hardware físico.

Ventajas y desventajas

Ventajas

Con las máquinas virtuales, podemos tener varios sistemas operativos sin necesidad de crear particiones o tener más discos duros, esto nos permitirá poder tener sistemas operativos para pruebas. Por ejemplo, que sale una versión beta y no queremos instalarla en nuestro sistema operativo de trabajo, ya que las betas son eso, "pruebas" y puede que dejen el sistema operativo inestable, algo que no se quiere con el equipo de trabajo. De esta forma siempre se tendrá la oportunidad de probar esos programas beta sin que afecten a las cosas que se tienen instaladas ni que obliguen a formatear y volver a instalar de nuevo todo lo que se tiene.

Desventajas

Una de las razones por la que las máquinas virtuales no son la panacea de la computación, es que agregan gran complejidad al sistema en tiempo de ejecución. La principal desventaja de la máquina virtual, es que en la aplicación de algunos procesos tendrá como efecto la lentitud del computador, es decir, la computadora en la cual se está ejecutando este proceso debe tener una capacidad bastante notable “debe ser de gran capacidad o potente”.

Tipos de máquinas virtuales

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

Las máquinas virtuales de alivio 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").

  • Ejemplos: Java, .NET Framework.
  • Máquina virtual instanciada para un proceso.
  • Cuando termina el proceso, termina la instancia de máquina virtual.

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 para cuando este 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 de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma.

  • Virtualización ISA (Instruction Set Architecture).
  • Ofrecen un entorno de ejecución completo.

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 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 solo 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

Esta técnica permite que cualquier computadora pueda ejecutar software escrito para la máquina virtual. Solo 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.

Fuentes