máquinas virtuales de Sistemaeditar
Popek y Goldberg definieron originalmente una «máquina virtual» como «un duplicado eficiente y aislado de una máquina de computadora real.»El uso actual incluye máquinas virtuales que no tienen correspondencia directa con ningún hardware real.El hardware físico «real» que ejecuta la máquina virtual se conoce generalmente como el «host», y la máquina virtual emulada en esa máquina se conoce generalmente como el «invitado»., Un host puede emular varios huéspedes, cada uno de los cuales puede emular diferentes sistemas operativos y plataformas de hardware.
el deseo de ejecutar múltiples sistemas operativos fue el motivo inicial para las máquinas virtuales, con el 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ó., El CP / CMS de IBM, los primeros sistemas en permitir la virtualización completa, implementó el tiempo compartido al proporcionar a cada usuario un sistema operativo de un solo usuario, el sistema de Monitor conversacional (CMS). A diferencia de la memoria virtual, una máquina virtual del sistema le daba derecho al usuario a escribir instrucciones privilegiadas en su código. Este enfoque tenía ciertas ventajas, como la adición de dispositivos de entrada / salida no permitidos por el sistema estándar.,
a medida que la tecnología evoluciona la memoria virtual con fines de virtualización, se pueden aplicar nuevos sistemas de sobrecompromisión de memoria para administrar el uso compartido de memoria entre varias máquinas virtuales en un sistema operativo de computadora. Puede ser posible compartir páginas de memoria que tienen contenidos idénticos 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 núcleo (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 un software similar, bibliotecas de software, servidores web, Componentes de middleware, etc. Los sistemas operativos invitados no necesitan ser compatibles con el hardware host, por lo que es posible ejecutar diferentes sistemas operativos en el mismo equipo (por ejemplo, Windows, Linux o versiones anteriores de un sistema operativo) para admitir software futuro.,
el uso de máquinas virtuales para admitir sistemas operativos invitados separados es popular en lo que respecta a los sistemas embebidos. 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 nuevo y no probado todavía 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 mejor acceso a la depuración y reinicios más rápidos.,
varias máquinas virtuales que ejecutan su propio sistema operativo invitado se utilizan con frecuencia para la consolidación del servidor.
Process virtual machinesEdit
una máquina virtual de proceso, a veces llamada máquina virtual de aplicaciones o entorno de ejecución administrado (MRE), se ejecuta como una aplicación normal dentro de un sistema operativo host y admite un solo proceso. Se crea cuando se inicia ese proceso y se destruye cuando sale., Su propósito es proporcionar un entorno de programación independiente de la plataforma que abstrae los detalles del hardware o sistema operativo subyacente y permite que un programa se ejecute de la misma manera en cualquier plataforma.
una máquina virtual de proceso proporciona una abstracción de alto nivel, la de un lenguaje de programación de alto nivel (en comparación con la abstracción ISA de bajo nivel de la máquina virtual del sistema). Las máquinas virtuales de proceso se implementan utilizando un intérprete; el rendimiento comparable a los lenguajes de programación compilados se puede lograr mediante el uso de la compilación just-in-time.,
este tipo de VM se ha vuelto popular con el lenguaje de programación Java, que se implementa utilizando la máquina virtual Java. Otros ejemplos incluyen la máquina virtual Parrot y. NET Framework, que se ejecuta en una máquina virtual llamada Common Language Runtime. Todos ellos pueden servir como una capa de abstracción para cualquier lenguaje informático.
un caso especial de máquinas virtuales de proceso son sistemas que abstraen los mecanismos de comunicación de un clúster de computadoras (potencialmente heterogéneo). Dicha máquina virtual no consiste en un solo proceso, sino en un proceso por máquina física en el clúster., Están diseñados para facilitar la tarea de programar aplicaciones concurrentes al permitir que el programador se centre en algoritmos en lugar de los mecanismos de comunicación proporcionados por la interconexión y el sistema operativo. No ocultan el hecho de que la comunicación tiene lugar, y como tal no intentan presentar el clúster como una sola máquina.
a diferencia de otras máquinas virtuales de proceso, estos sistemas no proporcionan un lenguaje de programación específico, sino que están incrustados en un lenguaje existente; normalmente, este sistema proporciona enlaces para varios lenguajes (por ejemplo, C y Fortran)., Los ejemplos son la máquina virtual paralela (PVM) y la interfaz de paso de mensajes (MPI). No son estrictamente máquinas virtuales porque las aplicaciones que se ejecutan en la parte superior todavía tienen acceso a todos los servicios del sistema operativo y, por lo tanto, no se limitan al modelo del sistema.