DOS/32 Advanced DOS Extender - Technical Reference

8.0 - DOS/32 Advanced - Allocation of >64MB of memory

DOS/32 Advanced DOS Extender of version 6.00 and higher supports allocation of more than 64MB of memory without using Virtual Memory. This is accomplished by using the Superset of standard XMS functions, but also puts certain limitations on under which system softwares the application will run.

In general, allocation of >64MB of memory is supported only when running with a memory manager installed, which is the case with XMS, VCPI and DPMI systems. When running under Clean (INT 15h) system, allocation of more than 64MB is not available due to the abscence of a memory manager. Furthermore, when running DOS/32 Advanced under DPMI system, the present, "external", DPMI host will be responsible for providing the application with memory management functions and memory allocation. This leaves us with XMS and VCPI system softwares under which DOS/32 Advanced will use its own, built-in DPMI host when allocating memory.

Under XMS system, DOS/32 Advanced will automatically recognize whether the allocation of >64MB is supported and there is more than 64MB of memory installed into the computer. If that is the case, DOS/32 Advanced will allocate all free XMS memory making it available for protected mode programs's use. Otherwise, the DOS Extender will act in the standard way allocating as much memory as it can. To force DOS/32 Advanced not to allocate all the available memory you can reconfigure the DOS Extender and specify the amount of Extended Memory your application will require. However, DOS/32 Advanced emposes certain requirements for the XMS server under which it is running: the XMS specification version must be at least 3.0 for the DOS Extender to be able to use the Superset of XMS functions, and the computer must have 64MB or more free XMS memory. If any of these requirements are not met, DOS/32 Advanced will not be able to allocate >64MB of memory. The maximum amount of memory DOS/32 Advanced can allocate under XMS is limited to 2GB.

The things are more complex when running under a VCPI server. The amount of extended memory DOS/32 Advanced can allocate under VCPI is controlled by three factors: "Extended Memory" (see SUNSYS Setup Utility documentation), "VCPI PageTables" and "XMS+VCPI Allocation Scheme". To allocate >64MB of memory under VCPI you need to make sure that the VCPI PageTables value is greater than 16, and the XMS+VCPI Allocation Scheme feature is turned on. Most of VCPI servers are not capable of providing the client with more than 64MB (or even 32MB) of memory through EMS allocation mode. The XMS+VCPI Allocation Scheme feature turned on will ensure that the DOS Extender will allocate as much memory as it can from the VCPI memory pool (the EMS memory) and then will try to allocate the rest of the memory (if any) from the XMS. When running under VCPI, DOS/32 Advanced can allocate up to 256MB of memory.

Please note: successful allocation of >64MB of memory depends on many different factors, for example computer's BIOS vendor and BIOS' ability to provide the memory manager with the correct information about amount of physical memory present, installed memory manager and its ability to correctly determine the type of BIOS and make use of all the available physical memory and so on. Although allocation of more than 64MB of memory is a relatively simple process, it is vital that both the hardware and the software support it. If you are having problems with allocation of >64MB, try using another memory manager or switch to another system software. We highly recommend using XMS system as it is fast and more reliable than VCPI. But if you must use the VCPI system, make sure to configure the DOS Extender the right way, as suggested above.


Copyright Supernar Systems, Ltd. 1996-2005
All Rights Reserved.