Expanded and Extended Memory Support

Many popular DOS applications use EMS (expanded) and/or XMS (extended) memory extenders to gain access to memory in protected mode on the 80286, 80386, or 80486 processors. These extenders allow DOS applications to access memory above the 1MB real-mode addressing limit, in order to have total code and data space larger than the available base memory, and to have very large code or data objects loaded into memory for enhanced function and performance. The standard configuration of OS/2 Version 2.0 provides both EMS and XMS functions as part of MVDM.

Under MVDM, EMS and XMS memory allocations are managed as OS/2 pageable virtual memory in the same way as any other memory allocated under OS/2 Version 2.0, and not as fixed physical memory as is the case under DOS. As such, the total expanded/extended memory allocated can exceed the amount of physical memory installed in the system.

LIM EMS Version 4.0 Support

The LIM (Lotus-Intel-Microsoft) Expanded Memory Specification (EMS) Version 4.0 provides a standard interface for the use of expanded memory with Intel 80x86 computers. The specification allows for up to 32MB of expanded memory, with up to 255 expanded memory objects. Regions within these objects can be mapped into the 8086 address space (below 1MB) as required, allowing DOS applications to access large address spaces.

Under OS/2 Version 2.0, EMS emulation provides the following function:

  • Implements all the required functions in the LIM 4.0 EMS.

  • Provides each VDM with a logically separate EMS emulation. Each VDM has its own set of expanded objects so that features like interprocess communication work as they would if each VDM were running on a different physical 8086. A VDM cannot affect the availability of objects in other VDMs or access expanded memory "owned" by other VDMs.

  • Provides for remapping of conventional memory (below 640KB) for use by programs such as Windows 2.0.

  • Provides configurable limits for how much expanded memory is available for all VDMs, as well as a limit per VDM. An installed program in the start list allows the user to override the per-VDM limit, subject to the constraints imposed by the overall limit.

  • Supports multiple physical to single logical mappings. Different 8086 addresses can map to the same expanded memory object address. This is required by programs like Lotus 1-2-3**.

    EMS emulation is provided in MVDM by the Virtual Expanded Memory Manager (VEMM). VEMM is a virtual device driver offering a separate EMS emulation for each VDM. This is accomplished by placing most EMS control structures for a VDM in a per-VDM instance data area outside the V86 application's address space.

    Unlike most virtual device drivers, VEMM does not have a corresponding physical device driver. Rather, VEMM traps software interrupts for EMS services using a system call and manages the appropriate memory. VEMM depends upon the memory management capabilities of the OS/2 Version 2.0 operating system kernel. Allocation, reallocation, or deallocation of EMS memory objects is accomplished by requesting corresponding services from VDH services.

    LIMA XMS Version 2.0 Support

    The LIMA Extended Memory Specification (XMS) V2.0 provides a standard interface for the use of extended memory on Intel 80286, 80386, and 80486 computers. XMS functions allow for the moving of code and data objects from base memory into extended memory, and from extended memory to base memory. Two of the best known programs using XMS functions are print spoolers and virtual disks (RAM disks).

    The XMS specifications manage three distinct regions of memory:

  • The High Memory Area (HMA) is located immediately above 1MB and is exactly 65520 bytes (64KB - 16 bytes) in size.

  • The Upper Memory Area (UMA), consisting of Upper Memory Blocks (UMBs), is located between 640KB and 1MB.

  • The Extended Memory Blocks (EMBs) are used only for data storage.

    Under OS/2 Version 2.0, LIMA XMS emulation provides the following function:

  • Implements all LIMA V2.0 XMS functions.

  • Provides each VDM with a separate XMS emulation. Each VDM has its own high memory area, upper memory area, and extended memory blocks, so that features like interprocess communication work as they would if each VDM were running on a different physical 8086 processor. VDMs cannot affect the availability of objects in other VDMs or access memory "owned" by other VDMs.

  • Provides configurable limits for how much extended memory is available across all VDMs, as well as a limit per VDM. An installed program in the start list can override the per-VDM limit, subject to the constraint given by the overall limit, and can disable XMS support altogether for a particular VDM if its installation conflicts with the program being run in the VDM.

    The Virtual Extended Memory Manager (VXMS) is a virtual device driver that provides a separate XMS emulation for each VDM. As with VEMM, this is accomplished by placing most VXMS control structures for a VDM in a per-VDM instance data area outside the V86 application's address space. The amount of memory available to a VDM, the number of handles, and the existence of upper memory blocks are all configurable parameters which may be altered on a per-VDM basis.

    Like the VEMM virtual device driver, VXMS does not have a corresponding physical device driver, and utilizes the memory management capabilities of the operating system kernel. XMS object allocation, reallocation and deallocation are accomplished by requesting corresponding services from the memory manager.


    [Back: Virtual Device Drivers]
    [Next: DOS Settings]