En el microprocesador 80386 y posteriores, el modo 8086 virtual, también llamado modo real virtual o VM86, permite la ejecución de aplicaciones de modo real que violan las reglas bajo control de un sistema operativo de modo protegido.
El VM86 usaba la forma de segmentación del modo real, pero usaba la dirección resultante de 20 bits (realmente 21 bits), tratándola como una dirección lineal, de tal manera que era sujeta a paginación.
Era usado para ejecutar programas DOS en Microsoft Windows/386, Windows 3.x, Windows 95, Windows 98, Windows Me, y OS/2 2.x y más adelante, a través de las máquinas DOS virtuales, también en SCO UNIX a través de Merge, y en Linux por medio de dosemu.
Los programas de DOS de modo protegido, tanto de 16 como de 32 bits, no se ejecutan en el modo 8086 virtual, sino en modo usuario, siempre y cuando fueran compatibles con DPMI. Así que los emuladores arriba mencionados hacen de hecho más que solo el soporte para el modo 8086 virtual.
Direccionamiento de la memoria
El problema más común al correr código del 8086 desde el modo protegido es el direccionamiento de memoria que es totalmente diferente entre el modo protegido y el modo real. Según lo mencionado, al trabajar bajo el modo VM86 el mecanismo de segmentación vuelve a trabajar como en el modo real, pero el mecanismo de paginación sigue estando activo, y es transparente al código de modo real, así la protección de memoria es todavía aplicable, y de esa manera también lo es el aislamiento del espacio de direcciones.
Interrupciones
Cuando las interrupciones tanto de hardware como de software e instrucciones inet ocurren, el procesador se sale del modo VM86 y retorna a trabajar en el modo protegido para manejar la interrupción. Y antes de servir la interrupción, los registros DS, ES, FS, y GS se guardan en el nuevo stack (con Push) y se ponen a cero.
Véase también
- Modo real — Modo irreal — Modo 8086 virtual — Modo protegido — Modo de Gerencia del Sistema — Modo largo
- IA-32
- x86
- Lenguaje ensamblador x86