Las Maquinas Virtuales constituyen un medio para proporcionar a un ambiente de un sistema operativo, la posibilidad de ejecutar software que está disponible en otra plataforma.
El diccionario define a la palabra Virtual como ``Que puede realizar un acto, aunque no lo produzca''. Si tomamos encuenta esta definición de virtual, podemos pensar en una máquina virtual como ``una máquina que es capaz de realizar una operación, aunque no la produzca''. Esta definición se presenta ambigüa por la presencia de la palabra "aunque", ya que implica que la máquina por sí misma puede realizar, o nó, una operación directamente.
Existen diferentes definiciones de Máquinas Virtuales, algunos desarrolladores de software, como el grupo de Java, maneja el concepto de Máquina Virtual como un intértprete de instrucciones, otros, sin embargo, manejan el término con mayor seriedad y consideran a la máquina virtual como duplicados de una plataforma --algunos consideran al hardware, otros al software (sistema operativo o ambirente) y otros a ambos--, donde varias instrucciones de máquina deben ejecutarse directamente por el procesador anfitrión. Sin embargo, no es claro a que se refieren con plataforma, ¿la emulación de un procesador es una máquina virtual?, ¿lo es una simulación de un ambiente de programación?.
Nosotros definiremos a una Máquina Virtual (MV) como ``un sistema de software que ofrece una copia exacta del hardware sobre el cual, la MV, se está ejecutando''. Ejemplo de Máquinas Virtuales son la VM/370 (de Seawrigth y MacKinnon, [10]), donde las máquina virtuales, que se ejecutan sobre la IBM 370, ofrecen una copia exacta de la IBM 370. Esta definición se parece a la que maneja Goldberg [24] como ``un duplicado de hardware y software del sistema de computación real en el cual un subconjunto de instrucciones del procesador se ejecuta sobre el procesador anfitrión en modo nativo'', con la diferencia que nosotros no consideramos la parte de software de computación real.
La parte fundamental de una máquina virtual se conoce como Monitor de Máquina Virtual (MMV), corre a nivel de hardware y se encarga de manejar los recursos del sistema para exportarlos a la MV. Es decir, el MMV se encarga de preparar el contexto de ejecución de la MV, y de manejar los errores y excepciones que genere la MV.