QEMM

From Free net encyclopedia

QEMM (pronounced "kwem"), the Quarterdeck Expanded Memory Manager by Quarterdeck, was the most popular memory manager for the DOS operating system. QEMM provides access to the Upper Memory Blocks (UMBs), Expanded Memory Specification (EMS) memory and Extended Memory Specification (XMS) memory. Many DOS programs required a high amount of conventional memory, and QEMM helped to increase the amount of free conventional memory by loading programs to the UMBs. Many programs, such as Lotus 1-2-3, early versions of Microsoft Windows, and many games, also used the EMS and XMS memory.

Originally, it was called QEMM-386, and had a complementary product called QRAM that worked in a similar manner on Intel 80286's that had some specific Chips and Technologies chipsets. The 386 was dropped when the Intel Pentium was released. QEMM-386 and DESQview could cooperate and when shipped as a bundle were called DESQview 386.

The principal competitors of QEMM were BlueMax/386Max, and HeadRoom/NetRoom. However, QEMM outperformed everything on the market - enabling 634 KB of free conventional memory in most cases.

Compaq DOS 3.31, released in November 1987, was the first DOS operating system to bundle technology similar to QEMM-386 with the OS itself, incorporating a 386-mode EMS manager called CEMM. QEMM was the first V86 memory manager on the market.

Microsoft released comparable but simpler memory managers of its own - HIMEM.SYS for XMS and EMM386.EXE for EMS with MS-DOS 4.01 in 1989; earlier Windows/386 2.1 included a built-in EMM which offered EMS to DOS windows during Windows sessions only. These versions could not yet create Upper Memory Blocks. Digital Research's DR-DOS 5.0 (1990) was the first non-vendor-specific DOS to offer the UMB technology, incorporating a 386-mode XMS/EMS manager also called EMM386. MS-DOS finally ofered UMBs in 1991 with version 5.0. MS-DOS's EMM386 required HIMEM to be loaded first, while DR-DOS's EMM386 fulfilled both rôles and did not need HIMEM, which was only needed on 286 machines.

Neither DR's nor MS's memory managers were as capable as QEMM - for example, both required Upper Memory Blocks to be manually discovered and included, whereas QEMM could do this quite satisfactorily on its own. QEMM also did not require to predefine how much memory should become EMS and how much should be XMS, therefore it was not necessary to juggle boot configurations. However, although QEMM still usually freed up more conventional memory than EMM386 did, the bundled system did a usable job and QEMM's market share began to slide.

While popular when DOS programs were the mainstream, QEMM eventually became irrelevant as Windows programs replaced DOS programs. The final version was QEMM 97, which was compatible with Windows 95 and later Windows 98/ME, but by this point, DOS applications were largely obsolete and thus so was DOS memory optimisation.

Let's note that when Windows 3.0 (or later) was starting in 386 Enhanced mode, it was asking all memory managers (and possibly other TSR programs) to shut down, and took over their role for the duration of the Windows session. Indeed, it is not possible to have multiple protected mode kernels at once. So QEMM was not actually running together with Windows. As part of the shutdown sequence related to Windows startup, memory managers could however tell Windows to load specific VxD-type device drivers which would take over their original functionality during the Windows session. For example, QEMM was shipped with WINHIRAM.VXD and WINSTLTH.VXD. They would also inform Windows about the specific memory mappings they have established, which Windows would then import (the so-called Global EMM import function).

QEMM is considered by many to be one of the most robust and technically elegant pieces of software written for the PC during its time period.

See also

External links