Your DOS system might use as many as five kinds of memory. Although physically the same, these account for different areas of available RAM. This multiplicity reflects a history of attempts by developers to realize additional memory under the constraint of DOS's limited address range.
The different kinds of memory that you might use are as follows:
Some of the available Conventional Memory is taken up by DOS. The device drivers and commands listed in your CONFIG.SYS and AUTOEXEC.BAT files use some too. Any that is left over is available for other programs.
All DOS programs can recognize addresses in the 640Kbytes of Conventional Memory, but not all can recognize addresses above this.
Most programs therefore need special instructions to recognize addresses in Extended Memory.
To use Extended Memory efficiently, you can install a program called an Extended Memory manager. This prevents different programs from using the same part of Extended Memory at the same time. DOS version 5.0 includes an Extended Memory manager called HIMEM.SYS (see Section 2.0). This conforms to the Lotus/Intel/Microsoft/AST eXtended Memory Specification (XMS).
Extended Memory is the best choice for memory expansion if you wish to use Microsoft Windows version 3.0 or above. (See Section 1.2.1).
On 8086 computers Expanded Memory was the only way of increasing available memory. It was mainly used for storing data required by application programs; program code could not normally be run in Expanded Memory. Data would be mapped from an Expanded Memory board into space in the Upper Memory Area called a Page Frame. From the Page Frame it could then be accessed by an application program.
Today the concept of Expanded Memory describes software emulation of this process. If your computer has a 386 or higher processor with more than 1Mbyte of RAM, you no longer need to install an Expanded Memory board in order to use Expanded Memory. Expanded Memory Managers map data from Extended Memory into Page Frames as if your computer had Expanded Memory boards installed.
Expanded Memory is faster than Extended Memory but programs which use it can only access 16Kbyte blocks of data at a time (16Kbytes being the maximum size of a Page Frame). However, because Expanded Memory was introduced first, there exist more programs that are designed to use it than is true of Extended Memory.
Expanded Memory managers conform to the Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS).
You can free up more Conventional Memory by running certain device drivers in Upper Memory Blocks. The DOS commands DEVICEHIGH, and LOADHIGH, enable you to do this. They store driver code in an area of Extended Memory that has been mapped by a Memory Manager into Upper Memory. The number of drivers you can run using a Memory Manager depends on how much Upper Memory is left unused by your system and by your Expanded Memory Page Frame. The free space that is available for pieces of driver code must also be sufficiently unfragmented to accommodate them properly.
DEVICEHIGH and LOADHIGH are particularly useful for users of networked computers, because applications often do not take account of the need for network drivers to be accommodated when they make their own demands upon available memory.
device=himem.sys dos=high.
A memory manager is a device driver that provides access to a particular type of memory. The handling of Conventional Memory is part of DOS's normal operation, but extra software is required for memory management beyond this. DOS version 5.0 includes two installable memory managers:
Although memory managers themselves use some Conventional Memory, they make up for it by providing access to much larger amounts of Extended Memory, Expanded Memory, Upper Memory, or High Memory.