XMS Overview
LIMA XMS is a specification for an extended memory programming interface
on the Intel 80286, 80386, and 80486 processors. The XMS specification
is a short document offering 18 functions which are accessed through a control
function supplied by the XMS driver. All XMS functions are executed
by calling the control function, the address of which is obtained by a call
to INT 2Fh. Arguments are passed in registers.
It does not specify hardware or processor speeds and does not depend on
any particular operating system. (The technique for determining if XMS
is present is based on the DOS interrupt vector 02Fh, but can be easily
provided in any OS that supports XMS.)
XMS manages three different kinds of memory:
High Memory Area (HMA) is the first 64KB
of extended memory. By activating the A20 address line, a real mode application
can access memory in this region as if it were conventional memory. The
HMA is exactly 65520 bytes (64KB - 16 bytes) long.
Extended Memory Blocks (EMBs) are blocks
of extended memory which lie beyond the HMA. They are not accessible from
real mode and serve only for data storage. Memory can be moved between
extended and conventional memory by a memory move function provided by the
XMS driver. Without leaving V86 mode, code cannot be executed from EMBs
and they serve only for data storage. The specification offers up to 64
megabytes of extended memory, divided into as many as 255 blocks.
Upper Memory Blocks (UMBs) are regions
of memory between 640KB and 1MB which may be used like conventional memory.
The size and number of UMBs is dependent upon the hardware configuration.
XMS provides a standard means of obtaining and using them. Once a UMB
is allocated, its memory is always available, and since the memory lies
in conventional memory, code may be executed in it at any time.
The major characteristics of these three types of expanded memory are summarized
in Table "Types of Expanded Memory".
The three different types of expanded memory are mapped into physical memory
in different ways by the XMS driver, as shown in Figure
"Memory Map of Extended Memory (HMA, UMA, and EMBs)".
[Back: Extended Memory Specification (XMS)]
[Next: XMS Functions]