stringtranslate.com

Requisitos de virtualización de Popek y Goldberg

Los requisitos de virtualización de Popek y Goldberg son un conjunto de condiciones suficientes para que una arquitectura informática admita la virtualización de sistemas de manera eficiente. Fueron introducidos por Gerald J. Popek y Robert P. Goldberg en su artículo de 1974 "Requisitos formales para arquitecturas virtualizables de tercera generación". [1] Aunque los requisitos se derivan de supuestos simplificadores, siguen representando una forma conveniente de determinar si una arquitectura informática admite una virtualización eficiente y proporcionan pautas para el diseño de arquitecturas informáticas virtualizadas.

Definición de VMM

Las máquinas virtuales de sistema son capaces de virtualizar un conjunto completo de recursos de hardware, incluyendo un procesador (o procesadores), recursos de memoria y almacenamiento y dispositivos periféricos. Un monitor de máquina virtual (VMM, también llamado hipervisor ) es la pieza de software que proporciona la abstracción de una máquina virtual. Hay tres propiedades de interés al analizar el entorno creado por un VMM: [2]

Equivalencia / Fidelidad
Un programa que se ejecuta bajo el VMM debe exhibir un comportamiento esencialmente idéntico al que se demuestra cuando se ejecuta directamente en una máquina equivalente.
Control de recursos / Seguridad
El VMM debe tener el control total de los recursos virtualizados.
Eficiencia / Rendimiento
Una fracción estadísticamente dominante de instrucciones de máquina debe ejecutarse sin intervención de VMM.

En la terminología de Popek y Goldberg, un VMM debe presentar las tres propiedades. En la terminología utilizada en el libro de referencia de Smith y Nair (2005), se supone que los VMM satisfacen las propiedades de equivalencia y control de recursos, y aquellos que además cumplen con la propiedad de rendimiento se denominan VMM eficientes . [3]

Popek y Goldberg describen las características que debe poseer la arquitectura del conjunto de instrucciones (ISA) de la máquina física para ejecutar máquinas virtuales que poseen las propiedades mencionadas anteriormente. Su análisis deriva dichas características utilizando un modelo de "arquitecturas de tercera generación" (por ejemplo, IBM 360, Honeywell 6000, DEC PDP-10) que, no obstante, es lo suficientemente general como para extenderse a las máquinas modernas. Este modelo incluye un procesador que opera en modo de sistema o de usuario y tiene acceso a una memoria lineal y uniformemente direccionable. Se supone que un subconjunto del conjunto de instrucciones está disponible solo cuando está en modo de sistema y que la memoria se direcciona en relación con un registro de reubicación. No se modelan las E/S ni las interrupciones.

Teoremas de virtualización

Para derivar sus teoremas de virtualización, que dan condiciones suficientes (pero no necesarias) para la virtualización, Popek y Goldberg introducen una clasificación de algunas instrucciones de una ISA en 3 grupos diferentes:

Instrucciones privilegiadas
Aquellos que atrapan si el procesador está en modo usuario y no atrapan si está en modo sistema ( modo supervisor ).
Instrucciones sensibles al control
Aquellos que intentan cambiar la configuración de los recursos en el sistema.
Instrucciones sensibles al comportamiento
Aquellos cuyo comportamiento o resultado depende de la configuración de los recursos (el contenido del registro de reubicación o el modo del procesador).

El resultado principal del análisis de Popek y Goldberg puede expresarse de la siguiente manera.

Teorema 1. Para cualquier computadora convencional de tercera generación , se puede construir un VMM efectivo si el conjunto de instrucciones sensibles para esa computadora es un subconjunto del conjunto de instrucciones privilegiadas.

Intuitivamente, el teorema establece que para construir un VMM es suficiente que todas las instrucciones que puedan afectar el correcto funcionamiento del VMM (instrucciones sensibles) siempre capturen y pasen el control al VMM. Esto garantiza la propiedad de control de recursos. Las instrucciones no privilegiadas, en cambio, deben ejecutarse de forma nativa (es decir, de manera eficiente). También se deduce que se mantiene la propiedad de equivalencia.

Este teorema también proporciona una técnica simple para implementar un VMM, llamada virtualización de trampa y emulación , más recientemente llamada virtualización clásica : debido a que todas las instrucciones sensibles se comportan bien, todo lo que el VMM tiene que hacer es atrapar y emular cada una de las instrucciones sensibles. [4] [5]

Un problema relacionado es el de derivar condiciones suficientes para la virtualización recursiva, es decir, las condiciones bajo las cuales se puede construir una máquina virtual que pueda ejecutarse en una copia de sí misma. Popek y Goldberg presentan las siguientes condiciones (suficientes).

Teorema 2. Una computadora convencional de tercera generación es virtualizable recursivamente si:

  1. Es virtualizable y
  2. Se puede construir un VMM sin ninguna dependencia de tiempo.

Algunas arquitecturas, como la x86 sin asistencia de hardware , no cumplen estas condiciones, por lo que no se pueden virtualizar de la manera clásica. Pero las arquitecturas aún se pueden virtualizar por completo (en el caso de la x86, es decir, a nivel de CPU y MMU) mediante el uso de diferentes técnicas como la traducción binaria, que reemplaza las instrucciones sensibles que no generan trampas, [4] que a veces se denominan instrucciones críticas. Sin embargo, este procesamiento adicional hace que el VMM sea menos eficiente en teoría, [5] pero las trampas de hardware también tienen un costo de rendimiento no despreciable. [ cita requerida ] Un sistema de traducción binaria de almacenamiento en caché bien ajustado puede lograr un rendimiento comparable, y lo hace en el caso de la traducción binaria x86 en relación con la asistencia de hardware x86 de primera generación, que simplemente hizo que las instrucciones sensibles fueran atrapables. [6] Efectivamente, esto da un teorema con diferentes condiciones de suficiencia. [ cita requerida ]

Teorema 3. Se puede construir un VMM híbrido para cualquier máquina de tercera generación en la que el conjunto de instrucciones sensibles al usuario sea un subconjunto del conjunto de instrucciones privilegiadas:

Manejo de instrucciones críticas

Las condiciones para la virtualización de ISA expresadas en el Teorema 1 pueden ser relajadas a expensas de la propiedad de eficiencia. Se han construido VMM para ISA no virtualizables (en el sentido de Popek y Goldberg) de manera rutinaria.

La virtualización de tales arquitecturas requiere un manejo correcto de las instrucciones críticas , es decir, instrucciones sensibles pero sin privilegios. Un enfoque, conocido como parcheo , adopta técnicas comúnmente utilizadas en la recompilación dinámica : las instrucciones críticas se descubren en tiempo de ejecución y se reemplazan con una trampa en el VMM. Se han propuesto varios mecanismos, como el almacenamiento en caché del código de emulación o las asistencias de hardware , para hacer que el proceso de parcheo sea más eficiente. Un enfoque diferente es el de la paravirtualización , que requiere que los sistemas operativos invitados se modifiquen ( porten ) antes de ejecutarse en el entorno virtual.

Conjuntos de instrucciones de arquitecturas comunes

En esta sección se presentan algunas arquitecturas relevantes y cómo se relacionan con los requisitos de virtualización.

PDP-10

La arquitectura PDP-10 tiene algunas instrucciones que son sensibles (alteran o consultan el modo del procesador) pero no privilegiadas. [7] Estas instrucciones guardan o restauran los códigos de condición que contienen bits USER o IOT:

Sistema/370

Todas las instrucciones sensibles en el Sistema/370 son privilegiadas: satisface los requisitos de virtualización. [8]

Motorola MC68000

El Motorola MC68000 tiene una única instrucción sensible sin privilegios:

Esta instrucción es sensible porque permite el acceso a todo el registro de estado, que incluye no solo los códigos de condición sino también el bit de usuario/supervisor, el nivel de interrupción y el control de seguimiento. En la mayoría de los miembros posteriores de la familia, a partir del MC68010 , la instrucción MOVE from SR se hizo privilegiada y se proporcionó una nueva instrucción MOVE from CCR para permitir el acceso solo al registro de código de condición. [9] [10]

IA-32 (x86)

El conjunto de instrucciones IA-32 del procesador Pentium contiene 18 instrucciones sensibles y sin privilegios. [11] Se pueden clasificar en dos grupos:

La introducción de los conjuntos de instrucciones AMD-V e Intel VT-x en 2005 permite que los procesadores x86 cumplan con los requisitos de virtualización de Popek y Goldberg.

IA-64

El esfuerzo necesario para soportar la virtualización en la arquitectura IA-64 se describe en un artículo de 2000 de Magenheimer y Christian. [12]

SPARC

En UltraSPARC Architecture 2005 se especificó un modo "hiperprivilegiado" para la arquitectura UltraSPARC . [13] Define una plataforma sun4v [14] que es un superconjunto de la plataforma sun4u , pero que aún cumple con la especificación SPARC v9 Nivel 1 [15] .

PC de potencia

Todas las instrucciones sensibles en el conjunto de instrucciones de PowerPC son privilegiadas. [16] [17]

Rendimiento en la práctica

El requisito de eficiencia en la definición de Popek y Goldberg de una VMM se refiere únicamente a la ejecución de instrucciones no privilegiadas, que deben ejecutarse de forma nativa. Esto es lo que distingue a una VMM de la clase más general de software de emulación de hardware . Desafortunadamente, incluso en una arquitectura que cumple con los requisitos de Popek y Goldberg, el rendimiento de una máquina virtual puede diferir significativamente del hardware real. Los primeros experimentos realizados en el System/370 (que cumple con los requisitos formales del Teorema 1) mostraron que el rendimiento de una máquina virtual podía ser tan bajo como el 21% de la máquina nativa en algunos puntos de referencia. El costo de atrapar y emular instrucciones privilegiadas en la VMM puede ser significativo. Esto llevó a los ingenieros de IBM a introducir una serie de asistencias de hardware , que prácticamente duplicaron el rendimiento de las máquinas virtuales System/370. [18] Las asistencias se agregaron en varias etapas. Al final, hubo más de 100 asistencias en los últimos modelos System/370. [19]

Uno de los principales factores que impulsaron el desarrollo de asistencias de hardware para el System/370 fue la propia memoria virtual. Cuando el invitado era un sistema operativo que implementaba por sí mismo memoria virtual, incluso las instrucciones no privilegiadas podían experimentar tiempos de ejecución más largos, una penalización impuesta por el requisito de acceder a tablas de traducción que no se utilizan en la ejecución nativa (ver tablas de páginas ocultas ). [20]

Referencias

  1. ^ Popek, GJ ; Goldberg, RP (julio de 1974). "Requisitos formales para arquitecturas virtualizables de tercera generación". Comunicaciones de la ACM . 17 (7): 412–421. doi : 10.1145/361011.361073 . S2CID  12680060.
  2. ^ Rogier Dittner, David Rule, El mejor libro sobre virtualización de servidores , Syngress, 2007, ISBN 1-59749-217-5 , pág. 19 
  3. ^ Smith y Nair, pág. 387
  4. ^ ab Adams y Agesen, 2006, págs.2-3
  5. ^ ab Smith y Nair, pág. 391
  6. ^ Adams y Agesen, pág. 1 y 5
  7. ^ SW Galley (1969). "Máquinas virtuales PDP-10". Proc. Taller ACM SIGARCH-SIGOPS sobre sistemas informáticos virtuales . págs. 30–34.
  8. ^ Smith y Nair, pág. 395
  9. ^ Manual del usuario del microprocesador M68000 de 8/16-32 bits, novena edición . Phoenix, AZ, EE. UU.: Motorola, Inc. 1993.
  10. ^ Manual de referencia del programador de la familia Motorola M68000 . Phoenix, AZ, EE. UU.: Motorola, Inc. 1992.
  11. ^ John Scott Robin y Cynthia E. Irvine (2000). "Análisis de la capacidad de Intel Pentium para soportar un monitor de máquina virtual seguro". Proc. 9.º Simposio de seguridad de USENIX .
  12. ^ Daniel J. Magenheimer y Thomas W. Christian (2000). "vBlades: Paravirtualización optimizada para la familia de procesadores Itanium". Proc. 3.er Simposio de investigación y tecnología de máquinas virtuales . USENIX. págs. 73–82.
  13. ^ Weaver, David (17 de mayo de 2007). Arquitectura UltraSPARC 2005: Una arquitectura... Múltiples implementaciones innovadoras (borrador D0.9) (PDF) . Santa Clara, CA, EE. UU.: Sun Microsystems, Inc. Archivado desde el original (PDF) el 19 de febrero de 2009.
  14. ^ Sun Microsystems, Inc. (24 de enero de 2006). Especificación de máquina virtual UltraSPARC (PDF) . Santa Clara, CA, EE. UU. Archivado desde el original (PDF) el 27 de septiembre de 2007.{{cite book}}: Mantenimiento de CS1: falta la ubicación del editor ( enlace )
  15. ^ Weaver, David L.; Tom Germond (1994). Manual de arquitectura SPARC: versión 9. San José, CA, EE. UU.: SPARC International, Inc. ISBN 0-13-825001-4.
  16. ^ "Virtualización: el camino elegante y el camino x86 – pagetable.com".
  17. ^ Mike Kasick; Glenn Willen; Mike Cui (16 de abril de 2007). "Virtualización" (PDF) . cs.cmu.edu .
  18. ^ Smith y Nair, págs. 415-416 y 426
  19. ^ Goma de mascar, pág. 535
  20. ^ Goma de mascar, pág. 533
Notas