Máquina virtual


En informática, una máquina virtual ( VM ) es la virtualización / emulación de un sistema informático . Las máquinas virtuales se basan en arquitecturas informáticas y proporcionan la funcionalidad de una computadora física. Sus implementaciones pueden involucrar hardware, software o una combinación de ellos.

Algunos emuladores de máquinas virtuales, como QEMU y emuladores de consolas de videojuegos , están diseñados para emular también (o "imitar virtualmente") diferentes arquitecturas de sistemas, lo que permite la ejecución de aplicaciones de software y sistemas operativos escritos para otra CPU o arquitectura. La virtualización a nivel de sistema operativo permite dividir los recursos de una computadora a través del kernel . Los términos no son universalmente intercambiables.

Una "máquina virtual" fue definida originalmente por Popek y Goldberg como "un duplicado eficiente y aislado de una máquina de computadora real". [1] El uso actual incluye máquinas virtuales que no tienen correspondencia directa con ningún hardware real. [2] El hardware físico del "mundo real" que ejecuta la máquina virtual generalmente se conoce como el "host", y la máquina virtual emulada en esa máquina generalmente se conoce como el "invitado". Un host puede emular varios invitados, cada uno de los cuales puede emular diferentes sistemas operativos y plataformas de hardware.

El deseo de ejecutar varios sistemas operativos fue el motivo inicial de las máquinas virtuales, a fin de permitir el tiempo compartido entre varios sistemas operativos de una sola tarea. En algunos aspectos, una máquina virtual de sistema puede considerarse una generalización del concepto de memoria virtual que históricamente la precedió. CP / CMS de IBM , los primeros sistemas que permiten la virtualización completa , implementaron el tiempo compartido al proporcionar a cada usuario un sistema operativo para un solo usuario, el Conversational Monitor System.(CMS). A diferencia de la memoria virtual, una máquina virtual del sistema autorizaba al usuario a escribir instrucciones privilegiadas en su código. Este enfoque tenía ciertas ventajas, como agregar dispositivos de entrada / salida no permitidos por el sistema estándar. [2]

A medida que la tecnología evoluciona la memoria virtual con fines de virtualización, se pueden aplicar nuevos sistemas de sobrecompromiso de memoria para administrar la memoria compartida entre múltiples máquinas virtuales en un sistema operativo de computadora. Es posible compartir páginas de memoria que tienen contenido idéntico entre varias máquinas virtuales que se ejecutan en la misma máquina física, lo que puede resultar en mapearlas a la misma página física mediante una técnica denominada fusión de la misma página del kernel(KSM). Esto es especialmente útil para páginas de solo lectura, como las que contienen segmentos de código, que es el caso de varias máquinas virtuales que ejecutan el mismo software o uno similar, bibliotecas de software, servidores web, componentes de middleware, etc. Los sistemas operativos invitados no necesitan para ser compatible con el hardware del host, lo que hace posible ejecutar diferentes sistemas operativos en la misma computadora (por ejemplo, Windows , Linux o versiones anteriores de un sistema operativo) para admitir software futuro. [3]

El uso de máquinas virtuales para admitir sistemas operativos invitados separados es popular en lo que respecta a los sistemas integrados . Un uso típico sería ejecutar un sistema operativo en tiempo real simultáneamente con un sistema operativo complejo preferido, como Linux o Windows. Otro uso sería para software novedoso y no probado que aún se encuentra en la etapa de desarrollo, por lo que se ejecuta dentro de una caja de arena . Las máquinas virtuales tienen otras ventajas para el desarrollo del sistema operativo y pueden incluir un acceso de depuración mejorado y reinicios más rápidos. [4]


Diagrama lógico de virtualización completa