
En informática , una máquina virtual ( VM ) es la virtualización o emulación de un sistema informático . Las máquinas virtuales se basan en arquitecturas informáticas y proporcionan la funcionalidad de un ordenador físico. Su implementación puede implicar hardware especializado, software o una combinación de ambos. Las máquinas virtuales difieren y se organizan según su función, como se muestra a continuación:
- Las máquinas virtuales de sistema (también llamadas máquinas virtuales de virtualización completa o SysVM [ 1 ] ) sustituyen a una máquina física. Proporcionan la funcionalidad necesaria para ejecutar sistemas operativos completos . Un hipervisor utiliza la ejecución nativa para compartir y gestionar el hardware, lo que permite la existencia de múltiples entornos aislados entre sí, pero que coexisten en la misma máquina física. Los hipervisores modernos emplean virtualización asistida por hardware , donde las características de hardware específicas para la virtualización en las CPU del host les brindan asistencia.
- Las máquinas virtuales de proceso están diseñadas para ejecutar programas informáticos en un entorno independiente de la plataforma.
Algunos emuladores de máquinas virtuales, como QEMU y los emuladores de consolas de videojuegos , están diseñados para emular (o "imitar virtualmente") diferentes arquitecturas de sistema, 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 particionar los recursos de un ordenador mediante el núcleo . Estos términos no son universalmente intercambiables.
Definiciones
Máquinas virtuales del sistema
Una «máquina virtual» fue definida originalmente por Popek y Goldberg como «una réplica eficiente y aislada de una máquina informática real». [ 2 ] Actualmente, el término incluye máquinas virtuales que no tienen correspondencia directa con ningún hardware real. [ 3 ] El hardware físico, del «mundo real», que ejecuta la máquina virtual se denomina generalmente «anfitrión», y la máquina virtual emulada en ese equipo se denomina generalmente «invitado». Un anfitrión puede emular varios invitados, 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 de las máquinas virtuales, para permitir el uso compartido del tiempo entre varios sistemas operativos de tarea única. En cierto modo, 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 uso compartido del tiempo proporcionando a cada usuario un sistema operativo de usuario único, el Sistema de Monitorización Conversacional (CMS). A diferencia de la memoria virtual, una máquina virtual de sistema autorizaba 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. [ 3 ]
A medida que la tecnología evoluciona, la memoria virtual para fines de virtualización permite aplicar nuevos sistemas de sobreasignación de memoria para gestionar el uso compartido de memoria entre múltiples máquinas virtuales en un mismo sistema operativo. Es posible compartir páginas de memoria con contenido idéntico entre varias máquinas virtuales que se ejecutan en la misma máquina física, lo que puede resultar en su asignación a la misma página física mediante una técnica denominada fusión de páginas idénticas del kernel (KSM). Esto resulta especialmente útil para páginas de solo lectura, como las que contienen segmentos de código, lo cual ocurre con múltiples máquinas virtuales que ejecutan el mismo software o software similar, bibliotecas de software, servidores web, componentes de middleware , etc. Los sistemas operativos invitados no necesitan ser compatibles con el hardware del host, lo que permite ejecutar diferentes sistemas operativos en el mismo equipo (por ejemplo, Windows , Linux o versiones anteriores de un sistema operativo) para admitir software futuro. [ 4 ]
El uso de máquinas virtuales para soportar sistemas operativos invitados independientes es popular en 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 novedoso y no probado que aún se encuentra en fase de desarrollo, de modo que se ejecute dentro de un entorno aislado . Las máquinas virtuales ofrecen otras ventajas para el desarrollo de sistemas operativos, como un mejor acceso para la depuración y reinicios más rápidos. [ 5 ]
Con frecuencia se utilizan varias máquinas virtuales que ejecutan su propio sistema operativo invitado para la consolidación de servidores. [ 6 ]
Procesar máquinas virtuales
Una máquina virtual de proceso , a veces llamada máquina virtual de aplicación o Entorno de Ejecución Gestionado (MRE), se ejecuta como una aplicación normal dentro de un sistema operativo anfitrión y admite un único proceso. Se crea cuando se inicia dicho proceso y se elimina cuando se cierra. Su propósito es proporcionar un entorno de programación independiente de la plataforma que abstraiga los detalles del hardware o sistema operativo subyacente y permita que un programa se ejecute de la misma manera en cualquier plataforma. [ 7 ]
Una máquina virtual de proceso proporciona una abstracción de alto nivel , similar a la de un lenguaje de programación de alto nivel (en comparación con la abstracción de bajo nivel del conjunto de instrucciones de la máquina virtual del sistema). Las máquinas virtuales de proceso se implementan mediante un intérprete ; se puede lograr un rendimiento comparable al de los lenguajes de programación compilados mediante la compilación justo a tiempo .
Este tipo de máquina virtual se ha popularizado con el lenguaje de programación Java , que se implementa mediante la máquina virtual Java . Otros ejemplos incluyen la máquina virtual Parrot y el .NET Framework , que se ejecuta en una máquina virtual llamada Common Language Runtime . Todas ellas pueden servir como capa de abstracción para cualquier lenguaje de programación.
Un caso especial de máquinas virtuales de proceso son los sistemas que abstraen los mecanismos de comunicación de un clúster de computadoras (potencialmente heterogéneo) . Dicha máquina virtual no consta de un solo proceso, sino de un proceso por máquina física en el clúster. Están diseñadas para facilitar la programación de aplicaciones concurrentes, permitiendo al programador centrarse en los algoritmos en lugar de en los mecanismos de comunicación proporcionados por la interconexión y el sistema operativo. No ocultan la existencia de comunicación y, por lo tanto, no intentan presentar el clúster como una sola máquina.
A diferencia de otras máquinas virtuales de procesos, estos sistemas no proporcionan un lenguaje de programación específico, sino que están integrados en un lenguaje existente; normalmente, un sistema de este tipo proporciona enlaces para varios lenguajes (por ejemplo, C y Fortran ). Algunos ejemplos son la Máquina Virtual Paralela (PVM) y la Interfaz de Paso de Mensajes (MPI).
Historia
Tanto las máquinas virtuales de sistema como las máquinas virtuales de proceso datan de la década de 1960 y siguen siendo áreas de desarrollo activo.
Las máquinas virtuales de sistema surgieron del tiempo compartido , implementado notablemente en el Sistema de Tiempo Compartido Compatible (CTSS). El tiempo compartido permitía que varios usuarios utilizaran un ordenador simultáneamente : cada programa parecía tener acceso completo a la máquina, pero solo se ejecutaba uno a la vez, y el sistema alternaba entre programas en intervalos de tiempo, guardando y restaurando el estado en cada ocasión. Esto evolucionó hacia las máquinas virtuales, especialmente a través de los sistemas de investigación de IBM: el M44/44X , que utilizaba virtualización parcial , y el CP-40 y el SIMMON , que utilizaban virtualización completa y fueron ejemplos tempranos de hipervisores . La primera arquitectura de máquina virtual ampliamente disponible fue el CP-67 /CMS (véase la Historia del CP/CMS para más detalles). Una distinción importante radicaba en el uso de varias máquinas virtuales en un mismo sistema anfitrión para el tiempo compartido, como en el M44/44X y el CP-40, y el uso de una sola máquina virtual en un sistema anfitrión para la creación de prototipos, como en el SIMMON. Los emuladores , con emulación de hardware de sistemas anteriores para compatibilidad, se remontan al IBM System/360 en 1963, [ 8 ] [ 9 ] mientras que la emulación de software (entonces llamada "simulación") es anterior a él.
Las máquinas virtuales de proceso surgieron originalmente como plataformas abstractas para un lenguaje intermedio utilizado como representación intermedia de un programa por un compilador ; los primeros ejemplos datan de alrededor de 1964 con el sistema de escritura de compiladores META II, que lo utilizaba tanto para la descripción de la sintaxis como para la generación de código de destino. Un ejemplo notable de 1966 fue la máquina de código O , una máquina virtual que ejecuta código O (código objeto) emitido por el front-end del compilador BCPL . Esta abstracción permitió que el compilador se portara fácilmente a una nueva arquitectura mediante la implementación de un nuevo back-end que tomaba el código O existente y lo compilaba a código máquina para la máquina física subyacente. El lenguaje Euler utilizó un diseño similar, con el lenguaje intermedio llamado P (portable). [ 10 ] Esto se popularizó alrededor de 1970 con Pascal , notablemente en el sistema Pascal-P (1973) y el compilador Pascal-S (1975), en el que se denominó código p y la máquina resultante como máquina de código p . Esto ha sido influyente, y las máquinas virtuales en este sentido se han denominado a menudo máquinas de código P. Además de ser un lenguaje intermedio, el código P de Pascal también se ejecutaba directamente mediante un intérprete que implementaba la máquina virtual, especialmente en UCSD Pascal (1978); esto influyó en intérpretes posteriores, en particular en la máquina virtual Java (JVM). Otro ejemplo temprano fue SNOBOL4 (1967), escrito en el lenguaje de implementación SNOBOL (SIL), un lenguaje ensamblador para una máquina virtual, que luego se adaptaba a máquinas físicas mediante la transpilación a su ensamblador nativo a través de un ensamblador de macros . [ 11 ] Sin embargo, las macros han caído en desuso, por lo que este enfoque ha sido menos influyente. Las máquinas virtuales de procesos fueron un enfoque popular para implementar software para microcomputadoras primitivas, incluyendo Tiny BASIC y juegos de aventuras, desde implementaciones únicas como Pyramid 2000 hasta un motor de propósito general como la z-machine de Infocom , que Graham Nelson argumenta que es "posiblemente la máquina virtual más portátil jamás creada". [ 12 ]
Se produjeron avances significativos en la implementación de Smalltalk -80, [ 13 ] particularmente la implementación Deutsch/Schiffmann [ 14 ] que impulsó la compilación justo a tiempo (JIT) como un enfoque de implementación que utiliza una máquina virtual de procesos. [ 15 ] Otras máquinas virtuales Smalltalk notables posteriores fueron VisualWorks , la máquina virtual Squeak , [ 16 ] y Strongtalk . [ 17 ] Un lenguaje relacionado que produjo mucha innovación en máquinas virtuales fue el lenguaje de programación Self , [ 18 ] que fue pionero en la optimización adaptativa [ 19 ] y la recolección de basura generacional . Estas técnicas demostraron su éxito comercial en 1999 en la máquina virtual Java HotSpot . [ 20 ] Otras innovaciones incluyen una máquina virtual basada en registros, para adaptarse mejor al hardware subyacente, en lugar de una máquina virtual basada en pila, que se ajusta más al lenguaje de programación; en 1995, esto fue pionero con la máquina virtual Dis para el lenguaje Limbo .
Técnicas de virtualización

Virtualización completa
En la virtualización completa, la máquina virtual simula el hardware suficiente para permitir que un sistema operativo "invitado" sin modificar (diseñado para el mismo conjunto de instrucciones ) se ejecute de forma aislada. Este enfoque fue pionero en 1966 con los IBM CP-40 y CP-67 , predecesores de la familia de máquinas virtuales .
Entre los ejemplos que se encuentran fuera del ámbito de los mainframes se incluyen Parallels Workstation , Parallels Desktop para Mac , VirtualBox , Virtual Iron , Oracle VM , Virtual PC , Virtual Server , Hyper-V , VMware Fusion , VMware Workstation , VMware Server (descontinuado, anteriormente llamado GSX Server), VMware ESXi , QEMU , Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro y la tecnología Egenera vBlade.
Virtualización asistida por hardware
En la virtualización asistida por hardware, el hardware proporciona soporte arquitectónico que facilita la creación de un monitor de máquina virtual y permite que los sistemas operativos invitados se ejecuten de forma aislada. [ 21 ] La virtualización asistida por hardware se introdujo por primera vez en el IBM System/370 en 1972, para su uso con VM/370 , el primer sistema operativo de máquina virtual ofrecido por IBM como producto oficial. [ 22 ]
En 2005 y 2006, Intel y AMD proporcionaron hardware adicional para dar soporte a la virtualización. Sun Microsystems (adquirida por Oracle Corporation ) añadió características similares a sus procesadores UltraSPARC Serie T en 2005. Algunos ejemplos de plataformas de virtualización adaptadas a este hardware son KVM , VMware Workstation , VMware Fusion , Hyper-V , Windows Virtual PC , Xen , Parallels Desktop para Mac , Oracle VM Server para SPARC , VirtualBox y Parallels Workstation .
En 2006, se descubrió que la compatibilidad con hardware x86 de 32 y 64 bits de primera generación rara vez ofrecía ventajas de rendimiento sobre la virtualización por software. [ 23 ]
Virtualización a nivel de sistema operativo
En la virtualización a nivel de sistema operativo, un servidor físico se virtualiza a nivel de sistema operativo, lo que permite que varios servidores virtualizados, aislados y seguros, se ejecuten en un único servidor físico. Los entornos de sistema operativo "invitados" comparten la misma instancia del sistema operativo que el sistema anfitrión. Por lo tanto, el mismo núcleo del sistema operativo se utiliza para implementar los entornos "invitados", y las aplicaciones que se ejecutan en un entorno "invitado" determinado lo consideran un sistema independiente. La implementación pionera fue FreeBSD jails ; otros ejemplos incluyen Docker , Solaris Containers , OpenVZ , Linux-VServer , LXC , AIX Workload Partitions , Parallels Virtuozzo Containers e iCore Virtual Accounts.
Instantáneas
Una instantánea es un estado de una máquina virtual, y generalmente de sus dispositivos de almacenamiento, en un momento exacto. Una instantánea permite restaurar posteriormente el estado de la máquina virtual en el momento de la instantánea, deshaciendo así cualquier cambio posterior. Esta capacidad resulta útil como técnica de copia de seguridad , por ejemplo, antes de realizar una operación de riesgo. [ 24 ]
Las máquinas virtuales suelen usar discos virtuales para su almacenamiento; en un ejemplo muy sencillo, un disco duro de 10 gigabytes se simula con un archivo plano de 10 gigabytes . Cualquier solicitud de la máquina virtual para acceder a una ubicación en su disco físico se traduce automáticamente en una operación sobre el archivo correspondiente. Sin embargo, una vez que existe esta capa de traducción, es posible interceptar las operaciones y enviarlas a diferentes archivos, según diversos criterios. Cada vez que se toma una instantánea, se crea un nuevo archivo que se utiliza como superposición para sus predecesores. Los datos nuevos se escriben en la superposición superior; sin embargo, para leer los datos existentes, es necesario escanear la jerarquía de superposiciones, lo que permite acceder a la versión más reciente. De este modo, toda la pila de instantáneas constituye virtualmente un único disco coherente; en ese sentido, la creación de instantáneas funciona de forma similar a la técnica de copia de seguridad incremental .
En una instantánea también se pueden incluir otros componentes de una máquina virtual, como el contenido de su memoria RAM , la configuración del BIOS o sus ajustes de configuración. La función " Guardar estado " de los emuladores de consolas de videojuegos es un ejemplo de este tipo de instantáneas.
Restaurar una instantánea consiste en descartar o ignorar todas las capas superpuestas que se agreguen después de esa instantánea y dirigir todos los cambios nuevos a una nueva capa superpuesta.
Migración
Las instantáneas descritas anteriormente se pueden transferir a otra máquina host con su propio hipervisor. Cuando la máquina virtual se detiene temporalmente, se crea una instantánea, se transfiere y luego se reanuda en el nuevo host, este proceso se conoce como migración. Si las instantáneas antiguas se mantienen sincronizadas periódicamente, esta operación puede ser bastante rápida y permitir que la máquina virtual preste un servicio ininterrumpido mientras su host físico anterior se desconecta, por ejemplo, para mantenimiento.
conmutación por error
De forma similar al mecanismo de migración descrito anteriormente, la conmutación por error permite que la máquina virtual continúe operando si el host falla. Generalmente, esto ocurre cuando la migración se ha detenido. Sin embargo, en este caso, la máquina virtual continúa operando desde el último estado coherente conocido, en lugar del estado actual , basándose en los últimos datos que recibió el servidor de respaldo.
Virtualización anidada
La virtualización anidada se refiere a la capacidad de ejecutar una máquina virtual dentro de otra, siendo este concepto general extensible a una profundidad arbitraria. En otras palabras, la virtualización anidada consiste en ejecutar uno o más hipervisores dentro de otro hipervisor. La naturaleza de una máquina virtual invitada anidada no tiene por qué ser homogénea con su máquina virtual anfitriona; por ejemplo, la virtualización de aplicaciones puede implementarse dentro de una máquina virtual creada mediante virtualización de hardware . [ 25 ]
La virtualización anidada se vuelve más necesaria a medida que los sistemas operativos más extendidos incorporan funcionalidad de hipervisor, la cual, en un entorno virtualizado, solo puede utilizarse si el hipervisor circundante admite la virtualización anidada; por ejemplo, Windows 7 puede ejecutar aplicaciones de Windows XP dentro de una máquina virtual integrada. Además, migrar entornos virtualizados ya existentes a la nube, siguiendo el enfoque de Infraestructura como Servicio (IaaS), resulta mucho más complejo si la plataforma IaaS de destino no admite la virtualización anidada. [ 26 ] [ 27 ]
La forma en que se puede implementar la virtualización anidada en una arquitectura de computadora particular depende de las capacidades de virtualización asistida por hardware compatibles . Si una arquitectura particular no proporciona el soporte de hardware necesario para la virtualización anidada, se emplean diversas técnicas de software para habilitarla. [ 26 ] Con el tiempo, más arquitecturas obtienen el soporte de hardware necesario; por ejemplo, desde la microarquitectura Haswell (anunciada en 2013), Intel comenzó a incluir el sombreado de VMCS como una tecnología que acelera la virtualización anidada. [ 28 ]
Seguridad

Las máquinas virtuales se utilizan con frecuencia para aislar las aplicaciones entre sí por motivos de seguridad.
Este diseño arquitectónico (utilizado por Qubes OS , Whonix , KickSecure y Dangerzone) puede prevenir la propagación de malware de un sistema comprometido (por ejemplo, un cliente de correo electrónico que abre un documento infectado ) a otro sistema (por ejemplo, un gestor de contraseñas ). [ 29 ] [ 30 ]
Véase también
- Imagen de máquina de Amazon
- Virtualización de escritorio
- contenedores Linux
- Kit de desarrollo nativo
- Paravirtualización
- hipervisor de almacenamiento
- Máquina de Turing universal
- Dispositivo virtual
- Dispositivo de copia de seguridad virtual
- imagen de disco virtual
- Máquina virtual DOS (VDM)
- Escape de máquina virtual
- servidor virtual privado
Referencias
- ↑ Dittamo, Cristian (2010). Sobre la expresión de diferentes paradigmas de concurrencia en sistemas de ejecución virtual (tesis doctoral). Universidad de Pisa . Recuperado el 12 de mayo de 2025 .
- ↑ Popek, Gerald J. ; Goldberg, Robert P. (1974). "Requisitos formales para arquitecturas virtualizables de tercera generación" (PDF) . Communications of the ACM . 17 (7): 412– 421. doi : 10.1145/361011.361073 . S2CID 12680060 .
- 1 2 Smith, James E.; Nair, Ravi (2005). "La arquitectura de las máquinas virtuales" . Computer . 38 (5): 32– 38, 395– 396. Bibcode : 2005Compr..38e..32S . doi : 10.1109/MC.2005.173 . S2CID 6578280 .
- ↑ Oliphant, Patrick. "Máquinas virtuales" . VirtualComputing. Archivado del original el 29 de julio de 2016. Consultado el 23 de septiembre de 2015.
Algunas personas utilizan esa capacidad para configurar una máquina virtual independiente que ejecuta Windows en una Mac, lo que les da acceso a toda la gama de aplicaciones disponibles para ambas plataformas
. - ↑ "Reinicios de servidores súper rápidos: otra razón por la que la virtualización es genial" . vmwarez.com . 9 de mayo de 2006. Archivado del original el 14 de junio de 2006. Consultado el 14 de junio de 2013 .
- ↑ "Consolidación y contención de servidores con infraestructura virtual" (PDF) . VMware . 2007. Archivado (PDF) del original el 28/12/2013 . Consultado el 29/09/2015 .
- ↑ "Acerca de la tecnología Java" . Oracle . Consultado el 22 de mayo de 2026 .
- ↑ Pugh, Emerson W. ( 1995). Building IBM: Shaping an Industry and Its Technology . MIT. p. 274. ISBN 978-0-262-16147-3.
- ↑ Pugh, Emerson W .; et al. (1991). Los sistemas 360 y los primeros 370 de IBM . MIT. págs. 160–161 . ISBN 978-0-262-16123-7.
- ↑ Wirth, Niklaus Emil ; Weber, Helmut (1966). EULER: una generalización de ALGOL y su definición formal: Parte II, Communications of the Association for Computing Machinery . Vol. 9. Nueva York: ACM . págs. 89–99 .
- ↑ Griswold, Ralph E. La implementación macro de SNOBOL4 . San Francisco, CA: WH Freeman and Company, 1972 ( ISBN) 0-7167-0447-1), Capítulo 1.
- ↑ Nelson, Graham A. "Acerca de los intérpretes" . Sitio web de Inform . Archivado del original el 3 de diciembre de 2009. Consultado el 7 de noviembre de 2009 .
- ↑ Goldberg, Adele ; Robson, David (1983). Smalltalk-80: El lenguaje y su implementación . Serie Addison-Wesley en Ciencias de la Computación. Addison-Wesley . ISBN 978-0-201-11371-6.
- ↑ Deutsch, L. Peter ; Schiffman, Allan M. (1984). "Implementación eficiente del sistema Smalltalk-80" . POPL . Salt Lake City, Utah: ACM. doi : 10.1145/800017.800542 . ISBN 0-89791-125-3.
- ↑ Aycock, John (2003). "Una breve historia del sistema justo a tiempo". ACM Comput. Surv. 35 (2): 97– 113. doi : 10.1145/857076.857077 . S2CID 15345671 .
- ↑ Ingalls Jr., Daniel "Dan" Henry Holmes ; Kaehler, Ted; Maloney, John; Wallace, Scott; Kay, Alan Curtis (1997). "De vuelta al futuro: la historia de Squeak, un Smalltalk práctico escrito en sí mismo". OOPSLA '97: Actas de la 12.ª conferencia ACM SIGPLAN sobre programación orientada a objetos, sistemas, lenguajes y aplicaciones . Nueva York, NY, EE. UU.: ACM Press. págs. 318–326 . doi : 10.1145/263698.263754 . ISBN 0-89791-908-4.
- ↑ Bracha, Gilad ; Griswold, David (1993). «Strongtalk: Typechecking Smalltalk in a Production Environment». Actas de la Octava Conferencia Anual sobre Sistemas, Lenguajes y Aplicaciones de Programación Orientada a Objetos . OOPSLA '93. Nueva York, NY, EE. UU.: ACM. págs. 215–230 . doi : 10.1145/165854.165893 . ISBN 978-0-89791-587-8.
- ↑ Ungar, David Michael ; Smith, Randall B. (diciembre de 1987). "El yo: el poder de la simplicidad". ACM SIGPLAN Notices . 22 (12): 227– 242. doi : 10.1145/38807.38828 . ISSN 0362-1340 .
- ↑ Hölzle, Urs ; Ungar, David Michael (1994). "Optimizing dynamically-dispatched calls with run-time type feedback" . PLDI . Orlando, Florida, Estados Unidos: ACM. pp. 326–336 . doi : 10.1145/178243.178478 . ISBN 0-89791-662-X.
- ↑ Paleczny, Michael; Vick, Christopher; Click, Cliff (2001). "El compilador del servidor Java HotSpot" (PDF) . Actas del Simposio de Investigación y Tecnología de la Máquina Virtual Java . Vol. 1. Monterey, California: USENIX Association.
- ↑ Uhlig, Rich; Neiger, Gil; Rodgers, Dion; Santoni, Amy L.; Martins, Fernando CM; Anderson, Andrew V.; Bennett, Steven M. ; Kägi, Alain; Leung, Felix H.; Smith, Larry (mayo de 2005). "Tecnología de virtualización de Intel". Computer . 38 (5): 48– 56. Bibcode : 2005Compr..38e..48U . doi : 10.1109/MC.2005.163 . S2CID 18514555 .
- ↑ Randal, A. (2019). Lo ideal frente a lo real: una revisión de la historia de las máquinas virtuales y los contenedores.
- ↑ Adams, Keith; Agesen, Ole (21 de octubre de 2006). Una comparación de técnicas de software y hardware para la virtualización x86 (PDF) . ASPLOS'06, 21-25 de octubre de 2006. San José, California, EE. UU. Archivado (PDF) del original el 20 de agosto de 2010.
Sorprendentemente, encontramos que el soporte de hardware de primera generación rara vez ofrece ventajas de rendimiento sobre las técnicas de software existentes. Atribuimos esta situación a los altos costos de transición VMM/invitado y a un modelo de programación rígido que deja poco margen para la flexibilidad del software en la gestión de la frecuencia o el costo de estas transiciones.
- ↑ Ackerman, Pascal (07/10/2021). Ciberseguridad industrial: Supervise eficazmente la postura de ciberseguridad de su entorno ICS . Packt Publishing Ltd. pág. 57. ISBN 978-1-80020-582-6. Consultado el 17 de noviembre de 2025 .
- ↑ Orit Wasserman, Red Hat (2013). "Virtualización anidada: Shadow turtles" (PDF) . Foro KVM . Consultado el 7 de mayo de 2021 .
- 1 2 Muli Ben-Yehuda; Día de Michael D.; Zvi Dubitzky; Michael Factor; Nadav Har'El; Abel Gordon; Antonio Ligorio; Orit Wasserman; Ben-Ami Yassour (23 de septiembre de 2010). "El Proyecto Tortugas: Diseño e implementación de virtualización anidada" (PDF) . usenix.org . Consultado el 16 de diciembre de 2014 .
- ↑ Alex Fishman; Mike Rapoport; Evgeny Budilovsky; Izik Eidus (25 de junio de 2013). "HVX: Virtualizando la nube" (PDF) . rackcdn.com . Consultado el 16 de diciembre de 2014 .
- ↑ "Procesadores Intel Core vPro de 4.ª generación con Intel VMCS Shadowing" (PDF) . Intel . 2013. Consultado el 16 de diciembre de 2014 .
- ↑ "Introducción" . ¿Por qué Qubes OS?
- ↑ "Cuando la seguridad importa: trabajar con Qubes OS en The Guardian" . Blog de ingeniería de The Guardian .
Lecturas adicionales
- James E. Smith, Ravi Nair, Máquinas virtuales: plataformas versátiles para sistemas y procesos , Morgan Kaufmann, mayo de 2005, ISBN 1-55860-910-5, 656 páginas (abarca tanto máquinas virtuales de proceso como de sistema)
- Craig, Iain D. Máquinas virtuales . Springer , 2006, ISBN 1-85233-969-1, 269 páginas (cubre únicamente máquinas virtuales de proceso)
Enlaces externos
- Mendel Rosenblum (31 de agosto de 2004). "La reencarnación de las máquinas virtuales" . ACM Queue . Vol. 2, n.º 5.
- Los Laboratorios Nacionales Sandia ejecutan 1 millón de núcleos Linux como máquinas virtuales.
- El diseño de la máquina virtual Inferno por Phil Winterbottom y Rob Pike
- Máquinas virtuales
- Tecnología de sistemas operativos
- Implementación del lenguaje de programación