This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "EMM386" – news ·newspapers ·books ·scholar ·JSTOR(December 2009) (Learn how and when to remove this message) |
| EMM386 | |
|---|---|
| Developers | Microsoft,IBM,DR,Datalight, The FreeDOS team |
| Initial release | 1988, 37–38 years ago |
| Operating system | MS-DOS,PC DOS,DR DOS,ROM-DOS,FreeDOS |
| Platform | Intel 80386 |
| Type | Expanded memory manager,Command |
EMM386 is theexpanded memory manager ofMicrosoft'sMS-DOS,IBM'sPC DOS,Digital Research'sDR-DOS, andDatalight'sROM-DOS[1] which is used to create expanded memory usingextended memory onIntel 80386 CPUs. There also is an EMM386.EXE available inFreeDOS.[2]
EMM386.EXE can map memory into unused blocks in theupper memory area (UMA), allowing device drivers andterminate-and-stay-resident programs to be "loaded high", preservingconventional memory.
The technique probably first appeared with the development ofCEMM, included with Compaq's OEMMS-DOS for theCompaq Deskpro 386 in 1986. Microsoft's version first appeared, built-in, withWindows/386 2.0 in 1987 and as standalone EMM386.SYS withMS-DOS 4.0 in 1988; the more flexible EMM386.EXE version appeared inMS-DOS 5.0 in 1991.
EMM386 uses the processor'svirtual 8086 mode. This forces memory accesses made by DOS applications to go through the processor'sMMU (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 managerHIMEM.SYS). This technique enabled both EMS (expanded memory) as well asUMBs - 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 in386 Enhanced mode, with Windows'protected mode 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").[3][4][5][6]
Only a few memory managers implemented the GEMMIS API, some of the ones that include it are: EMM386.EXE, QuarterdeckQEMM, Qualitas386MAX,Helix Netroom[3] andDOSBox builtin DOS. Notably missing are FreeDOS's memory managers.
None of the FreeDOS memory managers (HIMEMX.EXE, JEMM386.EXE, JEMMEX.EXE) 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, andWindows 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:
Note that Windows in standard mode is limited in functionality, it lacks virtual memory, it skips the [386Enh] section in SYSTEM.INI and any device drivers in [386Enh] are not loaded.
| Bundled with | Date | Filename | Version |
|---|---|---|---|
| MS-DOS 4.01 | November 1988 | EMM386.SYS | 4.00 |
| Windows 3.0 | May 1990 | EMM386.SYS | 4.10.0419 |
| MS-DOS 5.0 | June 1991 | EMM386.EXE | 4.20.06x |
| IBM PC DOS 5.0 | June 1991 | EMM386.EXE | 4.20.06x |
| IBM PC DOS 5.02 | September 1992 | EMM386.EXE | 4.33 |
| MS-DOS 5.00a | November 1992 | EMM386.EXE | 4.33 |
| Windows 3.1 | April 1992 | EMM386.EXE | 4.44 |
| Windows for Workgroups 3.1 | October 1992 | EMM386.EXE | 4.44 |
| MS-DOS 6.0 | March 1993 | EMM386.EXE | 4.45 |
| IBM PC DOS 6.1 | June 1993 | EMM386.EXE | 4.45 |
| MS-DOS 6.2 | September 1993 | EMM386.EXE | 4.48 |
| Windows 3.11 | November 1993 | EMM386.EXE | 4.48 |
| Windows for Workgroups 3.11 | November 1993 | EMM386.EXE | 4.48 |
| MS-DOS 6.21 | March 1994 | EMM386.EXE | 4.48 |
| IBM PC DOS 6.3 | April 1994 | EMM386.EXE | 4.48 |
| MS-DOS 6.22 | June 1994 | EMM386.EXE | 4.49 |
| IBM PC DOS 7.0 | April 1995 | EMM386.EXE | 4.50 |
| IBM PC DOS 2000 | May 1998 | EMM386.EXE | 4.50 |
| Windows 95 | August 1995 | EMM386.EXE | 4.95 |
| Windows 98 | June 1998 | EMM386.EXE | 4.95 |
This DOS software-related article is astub. You can help Wikipedia byadding missing information. |