It emerged from the painful experiences with the 80286 protected mode, which by itself was not suitable to run concurrent real-mode applications well.
[1] John Crawford developed the Virtual Mode bit at the register set, paving the way to this environment.
When the real-mode program attempts to do things like access certain I/O ports to use hardware devices or access certain regions in its memory space, the CPU traps these events and calls the V86 monitor, which examines what the real mode program is trying to do and either acts as a proxy to interface with the hardware, emulates the intended function the real-mode program was trying to access, or terminates the real-mode program if it is trying to do something that cannot either be allowed or be adequately supported (such as reboot the machine, set a video display into a mode that is not supported by the hardware and is not emulated, or write over operating system code).
NTVDM in x86 Windows NT-based operating systems also use VM86 mode,[3] but with very limited direct hardware access.
Also, before servicing the interrupt, the DS, ES, FS, and GS registers are pushed on the new stack and zeroed.
VIP will cause a GP fault on the setting of simulated IF, directing the OS to process any pending interrupts.
First generation AMD Ryzen CPUs have been found to feature a broken VME implementation.
[14] Westmere and later Intel processors usually[15] can start the virtual processor directly in real mode using the "unrestricted guest" feature (which itself requires Extended Page Tables); this method removes the need to resort to the nested virtual 8086 mode simply to run the legacy BIOS for booting.