EMM386 is the
expanded memory manager of
Microsoft's
MS-DOS,
IBM's
PC DOS,
Digital Research's
DR-DOS
DR-DOS (written as DR DOS, without a hyphen, in versions up to and including 6.0) is a disk operating system for IBM PC compatibles. Upon its introduction in 1988, it was the first DOS attempting to be compatible with IBM PC DOS and MS-D ...
, and
Datalight's
ROM-DOS which is used to create expanded memory using
extended memory on
Intel 80386 CPUs. There also is an EMM386.EXE available in
FreeDOS.
Overview
EMM386.EXE can map memory into unused blocks in the
upper memory area (UMA), allowing device drivers and
TSRs to be "loaded high", preserving
conventional memory.
The technique probably first appeared with the development of
CEMM, included with
Compaq MS-DOS 3.31 in 1987. Microsoft's version first appeared, built-in, with
Windows/386 2.1 in 1988 and as standalone EMM386.SYS with
MS-DOS 4.01
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few oper ...
in 1989; the more flexible EMM386.EXE version appeared in
MS-DOS 5.0 in 1991.
Just as the other expanded memory managers, EMM386 uses the processor's
virtual 8086 mode. This forces memory accesses made by DOS applications to go through the processor's
MMU (introduced in the 386), and the page table entries used by the MMU are configured by EMM386 to map certain regions in upper memory to areas of extended memory (obtained by EMM386 through the extended memory manager
HIMEM.SYS). This technique enabled both EMS (expanded memory) as well as
UMBs - both of which appear to DOS applications to be memory in the upper area but are in fact mapped to physical memory locations beyond 1MB.
It temporarily shuts down during a Windows session in ''386 Enhanced'' mode, with Windows'
protected mode
In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units (CPUs). It allows system software to use features such as virtual memory, paging and safe multi-tasking d ...
kernel taking over its role.
Windows uses the GEMMIS API to take over memory management from EMM386.EXE. Global EMM Import Specification (GEMMIS) is supported via a document available to a select number of memory-manager vendors ("Windows/386 Paging Import Specification").
Only a few memory managers implemented the GEMMIS API, some of the ones that include it are: EMM386.EXE, Quarterdeck
QEMM, Qualitas
386MAX,
Helix Netroom and
DOSBox builtin DOS. Notably missing are FreeDOS's memory managers.
All of FreeDOS memory managers (HIMEMX.EXE, JEMM386.EXE, JEMMEX.EXE) do not implement the GEMMIS API and Windows fails to start when running in conjunction with JEMMxxx since Windows fails to take over the memory management role.
Windows ME,
Windows 98,
Windows 95,
Windows for Workgroups 3.1x, and
Windows 3.xx, all will fail with JEMMxxx displaying:
Cannot run Windows while the currently installed protected-mode software is
running.
Quit the protected-mode software, and then try again.
You may need to restart your computer.
With JEMMxx, it is possible to run Windows 3.x and Windows for Workgroups 3.1x in limited capabilities by forcing Windows to use Standard Mode; i.e. using 80286 Protected Mode, not 80386 Enhanced Mode. Three conditions are required:
# limit total XMS to 64MB
# EMS must be enabled, can't use NOEMS option. For example JEMMEX X2MAX=65422
# Windows operate in Standard Mode only, WIN /S or WIN /2
Note that Windows in standard mode is limited in functionality, it lacks virtual memory, it skips the
86Enhsection in SYSTEM.INI and any device drivers in
86Enhare not loaded.
See also
*
Upper memory area (UMA)
*
Extended memory (XMS)
*
Expanded memory (EMS)
*
List of DOS commands
References
External DOS commands
DOS memory management
Expanded memory managers
{{DOS-stub