2009-05-14 23 views

Respuesta

22

VMWare y el resto realidad virtualizar el hardware de la máquina. El sistema operativo que se ejecuta dentro de un contenedor VMWare (o los contenedores de virtualización de Parallels o Windows o Bochs o ...) tienen diversos grados de conocimiento de la ejecución dentro de un contenedor virtualizado. Dentro de VMWare, el sistema operativo no tiene idea de que se está ejecutando dentro de un contenedor virtual. El sistema operativo no se modifica en absoluto, aunque generalmente se instalan controladores especializados (lo más importante, video) para evitar problemas de rendimiento. Algunas otras máquinas virtuales no hacen una virtualización completa del hardware y en su lugar requieren que el sistema operativo dentro del contenedor haga llamadas especiales al contenedor en lugar de las llamadas de hardware regulares.

La JVM no es una máquina virtual en ese sentido. Ningún hardware que no sea el procesador está virtualizado. La JVM es esencialmente una CPU virtualizada más el mismo tipo de tiempo de ejecución que se incluye con C++ o cualquier otro lenguaje orientado a objetos, además de la recolección de basura y otras necesidades. Además, por supuesto, los archivos de clase Java (y archivos JAR, etc.) no son códigos de máquina, sino un código de bytes intermedio. Por lo tanto, la JVM tiene que compilar o interpretar archivos de clase (ya sea que estén contenidos en un archivo JAR o no) en tiempo de ejecución, y tiene la capacidad de cargar y encontrar nuevo código dinámicamente en tiempo de ejecución.

La JVM se denomina máquina virtual porque la definición de JVM define una máquina abstracta. Esto incluye registros, pila, etc., y el código de bytes que compila la fuente de Java es prácticamente código de máquina para esta máquina virtual. La JVM luego interpreta o compila este código de bytes en las instrucciones nativas de la máquina.

La diferencia es esencialmente que la JVM es un procesador virtualizado y las otras máquinas virtuales están virtualizados máquinas (incluyendo la tarjeta de vídeo, red, y otros dispositivos externos y registros de hardware).

6

No. Existe una diferencia entre la máquina virtual del sistema y la máquina virtual de proceso. JVM es una máquina virtual de proceso, mientras que VMWare y el tipo son máquinas virtuales de sistema. Para obtener más información, consulte wikipedia entry.

En cuanto a las máquinas virtuales paralelas son la preocupación, los estados de entrada antes mencionados,

PVM (Parallel Virtual Machine) no son máquinas estrictamente virtuales, como los aplicaciones que se ejecutan en la parte superior todavía tienen acceso a todos los servicios del sistema operativo, y son por lo tanto no se limitan al modelo de sistema proporcionado por la "VM".

2

Hay un resumen decente de las distinciones en "Running Xen: Una guía práctica para el arte de la virtualización" por Jeanna Matthews, et al. (Amazon). VMWare es un ejemplo de virtualización completa, y busca virtualizar una arquitectura de hardware físico para que diferentes sistemas operativos invitados no modificados puedan sentarse en él. Una máquina virtual Java es un ejemplo de lo que llaman virtualización de aplicaciones, donde "Las aplicaciones se ejecutan en un entorno de ejecución virtual que proporciona una API estándar para la ejecución multiplataforma y gestiona el consumo de recursos locales de la aplicación". (pag.13)

En ambos casos, tiene una capa de virtualización sobre la que se ejecuta el software. JVM ejecuta aplicaciones Java, mientras que VMWare ejecuta sistemas operativos completos. VMWare virtualiza una máquina que solía expresarse siempre como hardware físico. Una JVM virtualiza una máquina que podría expresarse en hardware físico, pero casi siempre no (pero vea hardware JVMs).

Cuestiones relacionadas