stringtranslate.com

Maquina virtual

VirtualBox en Ubuntu , ejecutando elsistema operativo Fedora en una ventana

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 una computadora física. Sus implementaciones pueden implicar hardware especializado, software o una combinación de ambos. Las máquinas virtuales se diferencian y están organizadas por su función, que se muestra aquí:

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 sistemas, 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 SO permite que los recursos de una computadora se particionen a través del núcleo . Los términos no son universalmente intercambiables.

Definiciones

Máquinas virtuales del sistema

Popek y Goldberg definieron originalmente una "máquina virtual" como "un duplicado eficiente y aislado de una máquina informática real". [1] El uso actual incluye máquinas virtuales que no tienen una correspondencia directa con ningún hardware real. [2] El hardware físico, "del mundo real" que ejecuta la máquina virtual se conoce generalmente como "host", y la máquina virtual emulada en esa máquina se conoce generalmente como "guest". Un host 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 monotarea. En algunos aspectos, una máquina virtual de sistema puede considerarse una generalización del concepto de memoria virtual que la precedió históricamente. CP/CMS de IBM , los primeros sistemas que permitieron la virtualización completa , implementaron el uso compartido del tiempo al proporcionar a cada usuario un sistema operativo monousuario, el Conversational Monitor System (CMS). A diferencia de la memoria virtual, una máquina virtual de sistema permitía al usuario 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. [2]

A medida que la tecnología evoluciona la memoria virtual con fines de virtualización, se pueden aplicar nuevos sistemas de sobreasignación de memoria para gestionar 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 tengan contenidos idénticos entre varias máquinas virtuales que se ejecutan en la misma máquina física, lo que puede dar como resultado el mapeo de las mismas páginas físicas 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 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 hace posible ejecutar diferentes sistemas operativos en la misma computadora (por ejemplo, Windows , Linux o versiones anteriores de un sistema operativo) para admitir software futuro. [3]

El uso de máquinas virtuales para soportar sistemas operativos invitados independientes es popular en lo que respecta a los sistemas integrados . 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 que aún se encuentra en la etapa de desarrollo, de modo que se ejecute dentro de un entorno aislado . Las máquinas virtuales tienen otras ventajas para el desarrollo de sistemas operativos y pueden incluir un acceso de depuración mejorado y reinicios más rápidos. [4]

Con frecuencia se utilizan varias máquinas virtuales que ejecutan su propio sistema operativo invitado para la consolidación de servidores. [5]

Procesar máquinas virtuales

Una máquina virtual de proceso, a veces llamada máquina virtual de aplicación 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 finaliza. 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. [ cita requerida ]

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 de sistema). Las máquinas virtuales de proceso se implementan utilizando un intérprete ; se puede lograr un rendimiento comparable al de los lenguajes de programación compilados mediante el uso de la compilación en tiempo real . [ cita requerida ]

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 VM llamada Common Language Runtime . Todos ellos pueden servir como una capa de abstracción para cualquier lenguaje de computadora. [ cita requerida ]

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) . Una máquina virtual de este tipo no consiste en un solo proceso, sino en un proceso por cada máquina física del clúster. Están diseñadas para facilitar la tarea de programar aplicaciones concurrentes al permitir que el programador se concentre en los algoritmos en lugar de en los mecanismos de comunicación proporcionados por la interconexión y el sistema operativo. No ocultan el hecho de que se produce la comunicación y, como tal, no intentan presentar el clúster como una sola máquina. [ cita requerida ]

A diferencia de otras máquinas virtuales de proceso, 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 ). [ cita requerida ] 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 a partir del tiempo compartido , como se implementó notablemente en el Sistema de tiempo compartido compatible (CTSS). El tiempo compartido permitía que varios usuarios usaran una computadora simultáneamente : cada programa parecía tener acceso completo a la máquina, pero solo se ejecutaba un programa a la vez, y el sistema cambiaba entre programas en porciones de tiempo, guardando y restaurando el estado cada vez. Esto evolucionó hacia las máquinas virtuales, en particular a través de los sistemas de investigación de IBM: el M44/44X , que usaba virtualización parcial , y el CP-40 y SIMMON , que usaban virtualización completa , y fueron los primeros ejemplos de hipervisores . La primera arquitectura de máquina virtual ampliamente disponible fue el CP-67 /CMS (consulte Historia de CP/CMS para obtener más detalles). Una distinción importante era entre usar múltiples máquinas virtuales en un sistema host para compartir el tiempo, como en M44/44X y CP-40, y usar una máquina virtual en un sistema host para crear prototipos, como en SIMMON. Los emuladores , con emulación de hardware de sistemas anteriores para compatibilidad, se remontan al IBM System/360 en 1963, [6] [7] mientras que la emulación de software (entonces llamada "simulación") es anterior.

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 utilizó 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 pudiera trasladar fácilmente a una nueva arquitectura mediante la implementación de un nuevo back-end que tomó el código O existente y lo compiló en código de máquina para la máquina física subyacente. El lenguaje Euler utilizó un diseño similar, con el lenguaje intermedio denominado P (portable). [8] Esto se popularizó alrededor de 1970 por Pascal , en particular en el sistema Pascal-P (1973) y el compilador Pascal-S (1975), en el que se denominó p-code y la máquina resultante como p-code machine . Esto ha sido influyente, y las máquinas virtuales en este sentido a menudo se han llamado máquinas de código p. Además de ser un lenguaje intermedio, el código p de Pascal también fue ejecutado directamente por un intérprete que implementaba la máquina virtual, en particular en UCSD Pascal (1978); esto influyó en los intérpretes posteriores, en particular la máquina virtual Java (JVM). Otro ejemplo temprano fue SNOBOL4 (1967), que fue escrito en el lenguaje de implementación SNOBOL (SIL), un lenguaje ensamblador para una máquina virtual, que luego se orientó a las máquinas físicas mediante la transpilación a su ensamblador nativo a través de un ensamblador de macros . [9] Sin embargo, desde entonces las macros han caído en desgracia, por lo que este enfoque ha sido menos influyente. Las máquinas virtuales de proceso fueron un enfoque popular para implementar el software de microcomputadoras temprano, incluido Tiny BASIC y los juegos de aventura, desde implementaciones únicas como Pyramid 2000 hasta un motor de propósito general como z-machine de Infocom , que Graham Nelson sostiene que es "posiblemente la máquina virtual más portátil jamás creada". [10]

Se produjeron avances significativos en la implementación de Smalltalk -80, [11] particularmente la implementación de Deutsch/Schiffmann [12] que impulsó la compilación justo a tiempo (JIT) como un enfoque de implementación que utiliza la máquina virtual de procesos. [13] Las máquinas virtuales Smalltalk notables posteriores fueron VisualWorks , Squeak Virtual Machine , [14] y Strongtalk . [15] Un lenguaje relacionado que produjo mucha innovación en máquinas virtuales fue el lenguaje de programación Self , [16] que fue pionero en la optimización adaptativa [17] y la recolección de basura generacional . Estas técnicas demostraron ser comercialmente exitosas en 1999 en la máquina virtual Java HotSpot . [18] 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 pilas, que es más parecida al lenguaje de programación; en 1995, esto fue iniciado por la máquina virtual Dis para el lenguaje Limbo .

Técnicas de virtualización

Diagrama lógico de virtualización completa

Virtualización completa

En la virtualización completa, la máquina virtual simula suficiente hardware para permitir que un sistema operativo "invitado" no modificado (diseñado para el mismo conjunto de instrucciones ) se ejecute de forma aislada. Este enfoque se inició en 1966 con los IBM CP-40 y CP-67 , predecesores de la familia VM .

Algunos ejemplos fuera del campo de mainframe 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. [19] La virtualización asistida por hardware se introdujo por primera vez en 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. [20]

En 2005 y 2006, Intel y AMD proporcionaron hardware adicional para soportar la virtualización. Sun Microsystems (ahora Oracle Corporation ) agregó características similares en sus procesadores UltraSPARC T-Series en 2005. Entre los ejemplos de plataformas de virtualización adaptadas a dicho hardware se incluyen 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 el soporte de hardware x86 de 32 y 64 bits de primera generación rara vez ofrecía ventajas de rendimiento sobre la virtualización de software. [21]

Virtualización a nivel de sistema operativo

En la virtualización a nivel de SO, 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 "invitado" comparten la misma instancia de ejecución del sistema operativo que el sistema host. Por lo tanto, también se utiliza el mismo núcleo del sistema operativo para implementar los entornos "invitados", y las aplicaciones que se ejecutan en un entorno "invitado" determinado lo ven como un sistema independiente. La implementación pionera fueron las cárceles de FreeBSD ; otros ejemplos incluyen Docker , Solaris Containers , OpenVZ , Linux-VServer , LXC , AIX Workload Partitions , Parallels Virtuozzo Containers y 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 más tarde el estado de la máquina virtual en el momento de la instantánea, deshaciendo de manera efectiva cualquier cambio que se haya producido posteriormente. Esta capacidad es útil como técnica de copia de seguridad , por ejemplo, antes de realizar una operación riesgosa. [ cita requerida ]

Las máquinas virtuales utilizan frecuentemente discos virtuales para su almacenamiento; en un ejemplo muy simple, se simula una unidad de disco duro de 10 gigabytes con un archivo plano de 10 gigabytes . Cualquier solicitud de la máquina virtual para una ubicación en su disco físico se traduce de forma transparente en una operación en el archivo correspondiente. Sin embargo, una vez que existe dicha capa de traducción, es posible interceptar las operaciones y enviarlas a diferentes archivos, según varios criterios. Cada vez que se toma una instantánea, se crea un nuevo archivo y 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 da como resultado el acceso a la versión más reciente. Por lo tanto, toda la pila de instantáneas es virtualmente un solo disco coherente; en ese sentido, la creación de instantáneas funciona de manera similar a la técnica de copia de seguridad incremental . [ cita requerida ]

También se pueden incluir en una instantánea otros componentes de una máquina virtual, como el contenido de su memoria de acceso aleatorio (RAM), la configuración del BIOS o sus parámetros de configuración. La función " Guardar estado " de los emuladores de consolas de videojuegos es un ejemplo de dichas instantáneas. [ cita requerida ]

Restaurar una instantánea consiste en descartar o ignorar todas las capas superpuestas que se agregan después de esa instantánea y dirigir todos los cambios nuevos a una nueva superposición. [ cita requerida ]

Migración

Las instantáneas descritas anteriormente se pueden mover a otra máquina host con su propio hipervisor; cuando la VM se detiene temporalmente, se toman instantáneas, se mueve y luego se reanuda en el nuevo host, esto se conoce como migración. Si las instantáneas anteriores se mantienen sincronizadas regularmente, esta operación puede ser bastante rápida y permitir que la VM brinde un servicio ininterrumpido mientras su host físico anterior se desconecta, por ejemplo, para realizar tareas de mantenimiento físico. [ cita requerida ]

Conmutación por error

De manera similar al mecanismo de migración descrito anteriormente, la conmutación por error permite que la máquina virtual continúe con sus operaciones si el host falla. Generalmente, esto ocurre si la migración ha dejado de funcionar. Sin embargo, en este caso, la máquina virtual continúa con sus operaciones desde el último estado coherente conocido, en lugar del estado actual , en función de los materiales que se le proporcionaron al servidor de respaldo por última vez. [ cita requerida ]

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 se refiere a ejecutar uno o más hipervisores dentro de otro hipervisor. La naturaleza de una máquina virtual invitada anidada no necesita ser homogénea con su máquina virtual anfitriona; por ejemplo, la virtualización de aplicaciones se puede implementar dentro de una máquina virtual creada mediante el uso de virtualización de hardware . [22]

La virtualización anidada se hace más necesaria a medida que los sistemas operativos más extendidos obtienen funcionalidad de hipervisor incorporada, que en un entorno virtualizado se puede utilizar solo si el hipervisor circundante admite la virtualización anidada; por ejemplo, Windows 7 es capaz de ejecutar aplicaciones de Windows XP dentro de una máquina virtual incorporada. Además, trasladar entornos virtualizados ya existentes a una nube, siguiendo el enfoque de Infraestructura como Servicio (IaaS), es mucho más complicado si la plataforma IaaS de destino no admite la virtualización anidada. [23] [24]

La forma en que se puede implementar la virtualización anidada en una arquitectura informática particular depende de las capacidades de virtualización asistida por hardware que se admitan . 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. [23] 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 shadowing VMCS como una tecnología que acelera la virtualización anidada. [25]

Véase también

Referencias

  1. ^ Popek, Gerald J. ; Goldberg, Robert P. (1974). "Requisitos formales para arquitecturas virtualizables de tercera generación" (PDF) . Comunicaciones de la ACM . 17 (7): 412–421. doi :10.1145/361011.361073. S2CID  12680060.
  2. ^ ab Smith, James E.; Nair, Ravi (2005). "La arquitectura de las máquinas virtuales". Computer . 38 (5): 32–38, 395–396. doi :10.1109/MC.2005.173. S2CID  6578280.
  3. ^ Oliphant, Patrick. "Máquinas virtuales". VirtualComputing. Archivado desde el 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 ejecute Windows en una Mac, lo que les da acceso a la gama completa de aplicaciones disponibles para ambas plataformas.
  4. ^ "Reinicios de servidores superrápidos: otra razón por la que la virtualización es genial". vmwarez.com . 2006-05-09. Archivado desde el original el 2006-06-14 . Consultado el 2013-06-14 .
  5. ^ "Consolidación y contención de servidores con infraestructura virtual" (PDF) . VMware . 2007. Archivado (PDF) desde el original el 28 de diciembre de 2013 . Consultado el 29 de septiembre de 2015 .
  6. ^ Pugh, Emerson W. (1995). La creación de IBM: la configuración de una industria y su tecnología . MIT. pág. 274. ISBN 978-0-262-16147-3.
  7. ^ Pugh, Emerson W. y otros (1991). Sistemas IBM 360 y primeros 370. MIT. págs. 160-161. ISBN. 978-0-262-16123-7.
  8. ^ Wirth, Niklaus Emil ; Weber, Helmut (1966). EULER: una generalización de ALGOL y su definición formal: Parte II, Comunicaciones de la Association for Computing Machinery. Vol. 9. Nueva York: ACM . págs. 89–99.
  9. ^ 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. 
  10. ^ Nelson, Graham A. "Acerca de los intérpretes". Sitio web Inform . Archivado desde el original el 2009-12-03 . Consultado el 2009-11-07 .
  11. ^ 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.
  12. ^ 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.
  13. ^ 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.
  14. ^ Ingalls Jr., Daniel "Dan" Henry Holmes ; Kaehler, Ted; Maloney, John; Wallace, Scott; Kay, Alan Curtis (1997). "Regreso 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. pp. 318–326. doi : 10.1145/263698.263754 . ISBN . 0-89791-908-4.
  15. ^ 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.
  16. ^ 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.
  17. ^ Hölzle, Urs ; Ungar, David Michael (1994). "Optimización de llamadas despachadas dinámicamente con retroalimentación de tipo en tiempo de ejecución". PLDI . Orlando, Florida, Estados Unidos: ACM. págs. 326–336. doi :10.1145/178243.178478. ISBN 0-89791-662-X.
  18. ^ Paleczny, Michael; Vick, Christopher; Click, Cliff (2001). "El compilador de servidor Java HotSpot". Actas del Simposio de investigación y tecnología de la máquina virtual Java en el Simposio de investigación y tecnología de la máquina virtual Java . Vol. 1. Monterey, California: Asociación USENIX.
  19. ^ 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". Computadora . 38 (5): 48–56. doi :10.1109/MC.2005.163. S2CID  18514555.
  20. ^ Randal, A. (2019). Lo ideal versus lo real: revisando la historia de las máquinas virtuales y los contenedores.
  21. ^ Adams, Keith; Agesen, Ole (2006-10-21). A Comparison of Software and Hardware Techniques for x86 Virtualization (PDF) (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) desde el original el 20 de agosto de 2010. Sorprendentemente, descubrimos 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 de VMM/guest y a un modelo de programación rígido que deja poco espacio para la flexibilidad del software a la hora de gestionar la frecuencia o el costo de estas transiciones.
  22. ^ Orit Wasserman, Red Hat (2013). "Virtualización anidada: tortugas de sombra" (PDF) . Foro KVM . Consultado el 7 de mayo de 2021 .
  23. ^ ab Muli Ben-Yehuda; Michael D. Day; Zvi Dubitzky; Michael Factor; Nadav Har'El; Abel Gordon; Anthony Liguori; Orit Wasserman; Ben-Ami Yassour (23 de septiembre de 2010). "El proyecto Turtles: diseño e implementación de la virtualización anidada" (PDF) . usenix.org . Consultado el 16 de diciembre de 2014 .
  24. ^ Alex Fishman; Mike Rapoport; Evgeny Budilovsky; Izik Eidus (25 de junio de 2013). "HVX: virtualización de la nube" (PDF) . rackcdn.com . Consultado el 16 de diciembre de 2014 .
  25. ^ "Procesadores Intel Core vPro de cuarta generación con Intel VMCS Shadowing" (PDF) . Intel . 2013 . Consultado el 16 de diciembre de 2014 .

Lectura adicional

Enlaces externos