Memory Management Extended Memory Managers: Figure 1 Upper Memory Holes
Memory Management Extended Memory Managers: Figure 1 Upper Memory Holes
Memory Management Extended Memory Managers: Figure 1 Upper Memory Holes
Memory Management
Upper Memory
The memory between the 640KB limit and 1 MB is generally referred to as upper
memory. Since this memory is real, software designed for real mode operation can be
operated in upper memory. Unfortunately, available memory slots in this region are not
contiguous - the holes are small and scattered - and seldom is a hole greater than
128KB. Figure 1 that shows the high memory holes being filled from extended memory
using the QEMM memory manager. Notice also, that extended memory used for this
purpose is not available for other uses.
1MB
System BIOS
Video BIOS Hole
Hole
Video RAM Hole
Video RAM QEMM Extended Memory
640K of EMM
Manages extended memory to fill holes using
80386 memory management capability
Real memory
To operate an MS-DOS program in the high memory region, the program must be
able to fit into one of the holes. Using the specialized memory management capability
of the 80386/486, not possible with lesser processors, extended memory can be shuffled
into the high memory holes that might exist in the 640KB to 1 MB memory region.
Although the high memory region supports ROM BIOS, video interface memory, and
other board-supplied BIOS routines such as hard disk and video interface BIOS, there is
usually 50-100KB of usable space remaining.
High Memory
High Memory is the first 64K block of extended memory at the boundary between
real and extended memory. This memory area is used by products such as DESQview,
Windows, and MS-DOS 5.x to execute a portion of the operating system, thereby
freeing more of real memory.
1
2
Shadow RAM
Shadow RAM is a process for replacing the slower ROM BIOS memories with fast
extended memory. The ROM are copied into extended memory, and disconnected, and
extended memory is mapped into the regions previously occupied by the ROMs.
Critical BIOS routines can execute much faster in RAM than in ROM. Shadowing will
usually result in considerable I/O speed improvements for those programs that use the
ROM functions. The most dramatic effect is seen on programs using the character-based
video BIOS routines. Quicker screen scrolling is most apparent.
DOS Extenders
Extenders are software products that MS-DOS programs can use to access
extended memory, while still allowing programs to execute under current versions of
MS-DOS. Extenders are considered MS-DOS enhanced because the MS-DOS program
must be written to include the use of an extender. The rewrite is not extensive, but it is
necessary. You cannot use memory extenders with non-extended MS-DOS programs.
Extenders are software products that enable the use of 80286 and above CPUs in
protected mode and extended memory by MS-DOS programs written to use the
extender. Most extenders use the XMS (Extended Memory Specification) to guarantee
software compatibility with other products and environments supporting XMS. The
extender software is welded into the respective application by the software developer
during the compilation process. Programs can use extended memory even though the
MS-DOS operating system does not support it. Although you launch your program from
MS-DOS, soon the extender takes control and provides the functionality for protected
mode operation. Upon leaving the program, protected mode is turned off and you are
returned to real mode.
EMS Drivers
EMS drivers permit the use of expanded memory for data manipulations for those
programs that know how to use the EMS drivers. DESQview takes the EMS driver
notion one step further by allowing multitasking in EMS memory. Recall that expanded
memory can be emulated with extended memory on 80836 CPU.
8088 systems
DESQview supports expanded memory on 8088 microcomputers. Using this
memory, you can multitask your existing MS-DOS applications.
80286 systems
Similar to the above, but faster.
80386/486 systems
Similar to the above, but extended memory is used to emulate the expanded
memory needed for multitasking. A large frame switching window can be used that
results in considerable efficiency when swapping large programs in and out of real
memory.
Since all software actually executes in real memory, you can multitask your
existing MS-DOS software and this can be done on all 80xxx CPUs.
2
2
Compatibility problems arise with the use of enhanced memory software. Some
MS-DOS computer vendors provide their own memory management programs (for
example, Compaq CEM), while generic versions exist (Quarterdeck QEMM) with greater
overall flexibility. Some MS-DOS programs provide their own extended memory support
and this can conflict with the support provided by DESQview or Windows. Some programs
use extended memory through non-standard mechanisms. VCPI (Virtual Control Program
Interface) and the Extended Memory Specification (XMS) define how to use extended
memory appropriately to avoid conflicts. Programs using extenders may not function in the
Windows's enhanced memory mode if they are not designed correctly. Extended memory
support provided by Windows can be in conflict with other memory managers that you may
have installed.
When operating high-performance software, you must understand a variety of
configurations. Many MS-DOS enhanced systems provide for special allocation of
extended and expanded memory, and these configurations are necessary for proper software
operation. When you encounter memory management conflict problems, you should be
aware of the following:
Conflict potential
Certain situations can result in memory usage and management conflicts. Just because
a particular program itself knows how to use extended memory does not mean that will
cooperate with the external memory management schemes provided by an enhanced
operating system.
Driver awareness
You need to understand how the various drivers (network, video, memory
management) interact. Do they need to be installed in any particular order? Will they work
together? Which MS-DOS computer are you using? Do you know anyone else who has
been successful with a similar configuration? Are you prepared to call the software vendor
with the specifics of your problems? Can you afford to wait for the next driver or support
software revision that may solve the problem? Never think that reporting the problem is not
useful. There are so many combinations of software, drivers, units, peripherals, that your
problem could very well be unique.
Real memory problems
Do not forget that no matter how loaded system is with extended and expanded
memory, no matter how much extended memory you have, you can still easily run out of
real memory. Although you may think you are using extended memory, much of the
software can execute only in the 640K region, and you may simply be filling it up. We are
in a period of transition as more programs are able to use advanced CPU memory
management and better operating systems evolve. When in doubt about memory size,
various utility programs can give detailed reports on software's memory usage.