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:
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:
Under OS/2 Version 2.0, LIMA XMS emulation provides the following function:
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.