Le mode virtuel 8086 () est un mode d'exécution particulier pour les processeurs de la famille x86. Ce mode fut créé avec l'apparition du processeur Intel 80386 en 1985 et est disponible sur toutes les versions ultérieures des processeurs Intel de la famille x86.

Le mode virtuel 8086, aussi appelé ou V86, permet au processeur de se comporter comme un processeur 8086 ou 8088 pour lesquels n'existait que le mode réel. Ses avantages par rapport au mode réel sont qu'il permet de garder la protection mémoire ainsi que le contrôle des processus par le système d'exploitation, et qu'il est très facile et très rapide de passer de ce mode au mode protégé et inversement.

Ce mode d'exécution fut créé pour faire fonctionner des applications DOS en même temps que des applications Windows qui nécessitent le mode protégé. Les programmes DOS (qu'ils soient 16 ou ) compatibles DPMI () fonctionnent en mode protégé et non au travers du mode virtuel 8086.

En pratique Ce mode utilise une segmentation similaire avec celle du mode réel, avec des adresses mémoire sur , mais sujettes à la pagination du mode protégé.

Les interruptions de type IRQ ou exceptions sont gérées comme si le processeur était en mode protégé (grâce à l'IDT qui n'a pas besoin de se situer dans la petite zone de mémoire accessible dans ce mode). Dans ce cas, les registres DS, ES, FS et GS sont placées sur la pile en plus des registres normalement placés en cas d'interruption.

Les instructions INT, IRET, IN, OUT, PUSHF, POPF, CLI et STI sont considérés comme sensibles et déclenchent une exception GPF traitée par une partie du système d'exploitation appelée gestionnaire du mode virtuel. Ce gestionnaire peut soit arrêter l'exécution du programme, soit analyser l'instruction fautive, simuler son exécution, puis reprendre l'exécution normale du programme en mode virtuel.

Utilisation Le mode virtuel 8086 est utilisé notamment sous Windows/386 2.1x, Windows 3.x en mode 386, Windows 9x, Windows Me et OS/2 2.x. Il est utilisé dans d'autres systèmes uniquement pour exécuter des programmes DOS et Windows : sous Windows NT et tous ses successeurs par l'intermédiaire de la machine virtuelle NTVDM, sous SCO UNIX au travers de Merge, et sous Linux grâce à, par exemple, DosEmu. Des machines virtuelles avancées comme VMware permettent l'utilisation de ce mode.

Il peut également être utilisé par les systèmes d'exploitation actuels pour utiliser des fonctions du BIOS, notamment celles du BIOS vidéo en l'absence d'un driver pour la carte graphique.

Toutefois, les processeurs x86-64 actuels ne peuvent pas basculer en mode 8086 virtuel lorsqu'ils fonctionnent en "Long Mode", c'est-à-dire dans le contexte d'un système d'exploitation . C'est la raison pour laquelle il n'est plus possible d'exécuter de programmes MS-DOS dans les versions x64 de Windows, ni indirectement de programmes Windows car ces programmes, bien qu'ils fonctionnaient en mode protégé et seraient supportés par le processeur en "Long Mode", faisaient appel au DOS (donc au mode 8086 virtuel) pour un certain nombre d'opérations.

Références Manuel du développeur sur architecture IA-32

Voir aussi Articles connexes Mode réel Mode protégé IA-32 x86 Jeu d'instructions x86

Catégorie:Architecture x86