En informática , la virtualización completa es una tecnología utilizada para proporcionar un entorno virtual específico que proporciona una simulación completa del hardware subyacente. Cualquier software que pueda ejecutarse en el hardware subyacente puede ejecutarse en un entorno virtual; como regla general, cualquier sistema operativo debe ejecutarse sin problemas en un entorno virtual, siempre que se ejecute en el hardware subyacente. Otros tipos de virtualización de plataformas permiten que solo se ejecute algún software modificado en un entorno virtual.
Un ejemplo de virtualización completa se implementa en el programa de control IBM CP / CMS OS . Se demostró por primera vez en el sistema de investigación IBM CP-40 en 1967 , luego se hizo de código abierto en CP/CMS 1967-1972 y se introdujo en la línea VM desde 1972 hasta el presente. Cada usuario de CP/CMS recibió una computadora independiente simulada. Cada una de esas máquinas virtuales tenía todas las capacidades de la máquina base y, para sus usuarios, la máquina virtual era indistinguible de la real. Esta simulación fue completa y se basó en el principio de las instrucciones de funcionamiento de los equipos. Así, incluye elementos como: conjunto de instrucciones, RAM, interrupciones, excepciones y dispositivos de acceso. El resultado fue un sistema que podía multiplexar a muchos usuarios.
La virtualización completa solo es posible con la combinación adecuada de hardware y software. Por ejemplo, no era posible en la serie IBM System/360 excepto en IBM System/360-67, ni en los primeros IBM System/370 hasta que IBM agregó hardware de memoria virtual a su System/370 en 1972.
La situación es similar con la plataforma x86: la virtualización completa no era completamente posible antes de la adición de las tecnologías AMD-V e Intel VT (estas tecnologías se analizarán con más detalle a continuación en la sección Virtualización de hardware). Muchos productos de virtualización para la plataforma x86 se acercaron y anunciaron la virtualización completa incluso antes de la implementación de AMD-V e Intel-VT . Los ejemplos incluyen ADEOS, Mac-on-Linux, Parallels Desktop para Mac, Parallels Workstation, VMware Workstation, VMware Server (anteriormente GSX Server), VirtualBox, Win4BSD y Win4Lin Pro.
VMware , por ejemplo, utiliza una técnica llamada " traducción binaria " para modificar automáticamente el software x86 sobre la marcha para reemplazar las instrucciones con secuencias de instrucciones seguras para máquinas virtuales. Esta tecnología proporciona la apariencia de una virtualización completa.
Un objetivo clave de la virtualización completa es interceptar y simular operaciones privilegiadas, como instrucciones de E/S. El efecto de ejecutar cada proceso que se ejecuta en una máquina virtual específica debe preservarse solo dentro de esa máquina virtual; no se debe permitir que los procesos virtuales cambien el estado de otras máquinas virtuales, daemon o hardware. Algunas instrucciones de la máquina pueden ejecutarse directamente en el hardware, ya que sus resultados están completamente contenidos en elementos controlados por el programa de control, como la memoria y los registros aritméticos. Pero no se puede permitir que otras instrucciones se ejecuten directamente, deben ser interceptadas y simuladas. Estas son instrucciones para acceder o modificar información estática que reside fuera de la máquina virtual.
La virtualización completa ha sido probada con éxito para: