Windows 3.11 DOS Virtual x86 System Driver
In Microsoft Windows 3.11, the primary system component responsible for managing Virtual 8086 (V86) mode for MS-DOS sessions was WIN386.EXE, supported internally by the V86MMGR (Virtual 8086 Mode Memory Manager) virtual device driver. Operating in 386 Enhanced Mode, these components enabled Windows to isolate DOS applications inside separate virtual machines while allowing multitasking alongside standard Windows applications.
The Role of WIN386.EXE
When Windows 3.11 launched in 386 Enhanced Mode,
WIN386.EXE took control as the 32-bit protected-mode kernel
and supervisor. Utilizing the hardware capabilities of the Intel 80386
processor, it acted as a lightweight hypervisor.
Its primary responsibilities included:
- Switching the CPU from real mode into protected mode.
- Creating independent Virtual Machine (VM) instances for every launched DOS prompt or DOS program.
- Preemptively multitasking DOS sessions using hardware interrupts and time-slicing.
The V86MMGR Driver
Embedded inside WIN386.EXE and managed through
SYSTEM.INI was *v86mmgr, the Virtual 8086 Mode
Memory Manager. While WIN386.EXE oversaw the virtual
machines as a whole, V86MMGR specifically handled memory
virtualization:
- Memory Virtualization: It mapped the first 1 megabyte of conventional and upper memory for each V86 session, allowing each DOS program to believe it had exclusive access to the system's low memory.
- Expanded and Extended Memory: It provided Expanded Memory Specification (EMS) and Extended Memory Specification (XMS) services directly inside each V86 VM.
- Interrupt Routing: It trapped real-mode hardware and software interrupts generated by DOS programs, translating or routing them safely through protected mode without crashing the host operating system.
Together with auxiliary Virtual Device Drivers (VxDs) like
DOSMGR and VPICD, WIN386.EXE and
V86MMGR formed the core architecture that made stable,
concurrent DOS sessions possible in Windows 3.11.