Le
mode virtuel 8086
(en
anglais
:
Virtual 8086 mode
) est un mode d'execution particulier pour les
processeurs
de la famille
x86
. Ce mode fut cree avec l'apparition du processeur
Intel 80386
en
1985
et est disponible sur toutes les versions ulterieures des processeurs
Intel
de la famille x86.
Le mode virtuel 8086, aussi appele
Virtual 8086
ou V86, permet au processeur de se comporter comme un processeur
8086
ou
8088
pour lesquels n'existait que le
mode reel
.
Ses avantages par rapport au mode reel sont qu'il permet de garder la protection memoire ainsi que le controle des processus par le systeme d'exploitation, et qu'il est tres facile et tres rapide de passer de ce mode au
mode protege
et inversement.
Ce mode d'execution fut cree pour faire fonctionner des applications
DOS
en meme temps que des applications Windows qui necessitent le
mode protege
.
Les programmes DOS (qu'ils soient 16 ou 32 bits) compatibles
DPMI
(en
anglais
:
DOS Protected Mode Interface
) fonctionnent en mode protege et non au travers du mode virtuel 8086.
Ce mode utilise une segmentation similaire avec celle du mode reel, avec des adresses memoire sur 20 bits, mais sujettes a la
pagination
du mode protege.
Les interruptions de type
IRQ
ou
exceptions
sont gerees comme si le processeur etait en mode protege (grace a l'
IDT
qui n'a pas besoin de se situer dans la petite zone de memoire accessible dans ce mode). Dans ce cas, les registres DS, ES, FS et GS sont placees sur la pile en plus des registres normalement places en cas d'interruption.
Les instructions INT, IRET, IN, OUT, PUSHF, POPF, CLI et STI sont consideres comme sensibles et declenchent une exception GPF traitee par une partie du systeme d'exploitation appelee gestionnaire du mode virtuel. Ce gestionnaire peut soit arreter l'execution du programme, soit analyser l'instruction fautive, simuler son execution, puis reprendre l'execution normale du programme en mode virtuel.
Le mode virtuel 8086 est utilise notamment sous
Windows/386 2.1x
,
Windows 3.x
en mode 386,
Windows 9x
,
Windows Me
et
OS/2
2.x. Il est utilise dans d'autres systemes uniquement pour executer des programmes DOS et Windows 16 bits : sous
Windows NT
et tous ses successeurs par l'intermediaire de la machine virtuelle NTVDM, sous
SCO UNIX
au travers de
Merge
, et sous
Linux
grace a, par exemple,
DosEmu
. Des machines virtuelles avancees comme
VMware
permettent l'utilisation de ce mode.
Il peut egalement etre utilise par les systemes d'exploitation actuels pour utiliser des fonctions du BIOS, notamment celles du
BIOS video
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-a-dire dans le contexte d'un systeme d'exploitation 64 bits.
C'est la raison pour laquelle il n'est plus possible d'executer de programmes MS-DOS dans les versions x64 de Windows, ni indirectement de programmes Windows 16 bits car ces programmes, bien qu'ils fonctionnaient en mode protege et seraient supportes par le processeur en "Long Mode", faisaient appel au DOS (donc au mode 8086 virtuel) pour un certain nombre d'operations.