Requerimientos de virtualización de Popek y Goldberg

Fueron elaborados por Gerald J. Popek y Robert P. Goldberg en su artículo de 1974 Formal Requirements for Virtualizable Third Generation Architectures.

Pero aun pueden ser completamente virtualizadas (en el caso de x86, a nivel de CPU y MMU) usando diferentes técnicas como la traducción binaria, que reemplaza las instrucciones sensibles que no generan traps, también llamadas instrucciones críticas.

De hecho, se construyen a menudo VMMs para ISAs no virtualizables (en el sentido dado por Popek y Goldberg).

Una aproximación, conocida como patching, adopta técnicas comúnmente utilizadas en recompilación dinámica: las instrucciones críticas son identificadas en tiempo de ejecución y reemplazadas con un trap al VMM.

Se han propuesto varios mecanismos para hacer este proceso más eficiente; entre ellos, la asistencia por hardware y el almacenamiento en caché del código de emulación.

Una aproximación diferente es la paravirtualización, la cual requiere que el sistema operativo huésped sea modificado (portado) antes de ser ejecutado en el entorno virtual.