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]