Requisitos de virtualización de Popek y Goldberg

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Capacidades de una arquitectura informática

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 del sistema de manera eficiente. Fueron presentados por Gerald J. Popek y Robert P. Goldberg en su artículo de 1974 "Requisitos formales para arquitecturas virtualizables de tercera generación". Aunque los requisitos se derivan de supuestos simplificadores, aún representan una forma conveniente de determinar si una arquitectura de computadora admite una virtualización eficiente y proporcionan pautas para el diseño de arquitecturas de computadora virtualizadas.

Definición de VMM

Las máquinas virtuales del sistema son capaces de virtualizar un conjunto completo de recursos de hardware, incluido 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:

Equivalencia / Fidelidad
Un programa que se ejecuta bajo la VMM debe mostrar un comportamiento esencialmente idéntico al que se demuestra cuando se ejecuta en una máquina equivalente directamente.
Control de recursos / Seguridad
La VMM debe estar en control completo de los recursos virtualizados.
Eficiencia / rendimiento
Una fracción estadísticamente dominante de las instrucciones de la máquina debe ejecutarse sin intervención 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), normalmente 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.

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 VMM que posean las propiedades anteriores. Su análisis deriva tales características utilizando un modelo de "arquitecturas de tercera generación" (por ejemplo, IBM 360, Honeywell 6000, DEC PDP-10) que, sin embargo, es lo suficientemente general como para extenderse a las máquinas modernas. Este modelo incluye un procesador que opera en modo sistema o usuario y tiene acceso a una memoria lineal y direccionable uniformemente. Se supone que un subconjunto del conjunto de instrucciones está disponible sólo cuando está en modo sistema y que la memoria se direcciona en relación con un registro de reubicación. Las E/S y las interrupciones no se modelan.

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 de usuario y no atrapan si está en modo de sistema (modo supervisor).
Instrucciones de control sensible
Aquellos que intentan cambiar la configuración de recursos en el sistema.
Instrucciones sensibles al comportamiento
Aquellos cuyo comportamiento o resultado depende de la configuración de recursos (el contenido del registro de reubicación o el modo del procesador).

El resultado principal del análisis de Popek y Goldberg se puede expresar 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 podrían afectar el funcionamiento correcto del VMM (instrucciones sensibles) siempre atrapen y pasen el control al VMM. Esto garantiza la propiedad de control de recursos. En cambio, las instrucciones sin privilegios deben ejecutarse de forma nativa (es decir, de manera eficiente). Sigue también la tenencia de la propiedad de equivalencia.

Este teorema también proporciona una técnica simple para implementar un VMM, llamada virtualización de captura 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 capturar y emular cada una de las instrucciones confidenciales.

Un problema relacionado es el de derivar condiciones suficientes para la virtualización recursiva, es decir, las condiciones bajo las cuales se puede construir un VMM que pueda ejecutarse en una copia de sí mismo. 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. a VMM sin ninguna dependencia temporal se puede construir para él.

Algunas arquitecturas, como la x86 no asistida por hardware, no cumplen estas condiciones, por lo que no se pueden virtualizar de la forma clásica. Pero las arquitecturas aún se pueden virtualizar completamente (en el caso 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, que a veces se denominan instrucciones críticas. Sin embargo, este procesamiento adicional hace que el VMM sea menos eficiente en teoría, pero las trampas de hardware también tienen un costo de rendimiento no despreciable. Un sistema de traducción binaria de almacenamiento en caché bien ajustado puede lograr un rendimiento comparable, y lo logra en el caso de la traducción binaria x86 en comparación con la asistencia de hardware x86 de primera generación, que simplemente hacía que las instrucciones sensibles fueran atrapables. Efectivamente, esto da un teorema con diferentes condiciones de suficiencia.

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 ISA expresadas en el Teorema 1 pueden relajarse a expensas de la propiedad de eficiencia. Rutinariamente se han creado VMM para ISA no virtualizables (en el sentido de Popek y Goldberg).

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 parche, 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 asistencia 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 sean modificados (portados) antes de ejecutarse en el entorno virtual.

Conjuntos de instrucciones de arquitecturas comunes

Esta sección presenta 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 (alterar o consultar el modo del procesador) pero no privilegiadas. Estas instrucciones guardan o restauran los códigos de condición que contienen bits de USUARIO o IOT:

  • JSR: salto a la subrutina
  • JSP: saltar y guardar el contador del programa
  • PUSHJ: empuja hacia abajo y salta
  • JRST: salto y restauración

Sistema/370

Todas las instrucciones confidenciales en System/370 tienen privilegios: satisface los requisitos de virtualización.

Motorola MC68000

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

  • MOVE from SR

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, se privilegió la instrucción MOVE desde SR y se proporcionó una nueva instrucción MOVE desde CCR para permitir el acceso únicamente al registro del código de condición.

IA-32 (x86)

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

  • Instrucciones de registro sensibles: leer o cambiar registros sensibles o lugares de memoria como un registro de relojes o registros interrumpidos:
    • SGDT, SIDT, SLDT
    • SMSW
    • PUSHF, POPF
  • Instrucciones del sistema de protección: referencia al sistema de protección de almacenamiento, memoria o sistema de reubicación de direcciones:
    • LSL, VERR, VERW
    • POP
    • PUSH
    • Llamar a FAR, JMP FAR, INT n, RETF
    • STR
    • MOV (segment registers)

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 del año 2000 de Magenheimer y Christian.

SPARC

Una persona "hiperprivilegiada" El modo para la arquitectura UltraSPARC se especificó en UltraSPARC Architecture 2005.' Define una plataforma sun4v que es un superconjunto de la plataforma sun4u, pero aún cumple con la especificación SPARC v9 Nivel-1.

PowerPC

Todas las instrucciones confidenciales del conjunto de instrucciones de PowerPC tienen privilegios.

Rendimiento en la práctica

El requisito de eficiencia en la definición de VMM de Popek y Goldberg se refiere únicamente a la ejecución de instrucciones sin privilegios, que deben ejecutarse de forma nativa. Esto es lo que distingue a un VMM de la clase más general de software de emulación de hardware. Desafortunadamente, incluso en una arquitectura que cumpla 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 System/370 (que cumple con los requisitos formales del Teorema 1) mostraron que el rendimiento de una máquina virtual podría ser tan bajo como el 21% del de la máquina nativa en algunos puntos de referencia. El costo de capturar y emular instrucciones privilegiadas en VMM puede ser significativo. Esto llevó a los ingenieros de IBM a introducir una serie de asistencias de hardware, que aproximadamente duplicaron el rendimiento de las máquinas virtuales System/370. Se sumaron asistencias en varias etapas. Al final, hubo más de 100 asistencias en los últimos modelos System/370.

Uno de los principales factores impulsores para el desarrollo de asistencias de hardware para el System/370 fue la propia memoria virtual. Cuando el invitado era un sistema operativo que implementaba memoria virtual, incluso las instrucciones sin privilegios podían experimentar tiempos de ejecución más prolongados, 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).

Contenido relacionado

ALGOL Y

ALGOL Y fue el nombre dado a un sucesor especulado del lenguaje de programación ALGOL 60 que incorporaba algunas características radicales que fueron...

Filosofía de la inteligencia artificial

La filosofía de la inteligencia artificial es una rama de la filosofía de la tecnología. Esta se centra en investigar la inteligencia artificial y sus...

Red troncal

Una red troncal o central es una parte de una red informática que interconecta redes y proporciona un camino para el intercambio de información entre...

Historial de versiones de macOS

La historia de macOS, el actual sistema operativo Mac de Apple anteriormente llamado Mac OS X hasta 2011 y luego OS X hasta 2016, comenzó con el proyecto de...

Historia de la supercomputación

El término supercomputación surgió a fines de la década de 1920 en los Estados Unidos en respuesta a los tabuladores de IBM en la Universidad de Columbia....
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save