HIMEM is recognized by Windows during Windows Startup, so it is hooked, letting Windows take over management of all XMS calls. Any XMS Memory that was
allocated before Windows Startup is not included in available Memory for Windows but is mapped into the System Arena so Windows can support the Programs
and Drivers that reserved the Memory. Since most RAMDISKs use XMS Memory, they tie up System Arena space. This is why a large XMS based RAMDISK
cannot be used because the System Arena runs out of space.
HIMEMX is not recognized by Windows so calls to it are executed in Virtual Mode. HIMEMX uses the BIOS Interrupt 15 call to manipulate Extended Memory.
Windows hooks this Interrupt so it can manage the Memory. Windows uses the standard XMS calls to take over the Free Memory during Startup. The difference
is that Windows does not know about XMS Memory that was Allocated before Startup so it doesn't reserve space in the System Arena for it. This is why there
seems to be more space for DOS Boxes etc. The problem is that actually using this Memory invokes the Interrupt 15 call which then causes Windows to allocate
Pages to the System Arena to manage it. Reading or Writing a Large RAMDISK quickly fills up the System Arena and leads to a crash.
You can setup a large XMS RAMDISK using HIMEMX but your system will crash if you try to fill it up.
I also observed a problem combining HIMEMX with EMM386 whenever exceeding approximately 1408MB. EMM386 appears to allocate all of the XMS memory and
then release what it doesn't need. Above 1408MB EMM386 does not release approximately twice the amount of Memory above 1408MB, so the available memory
actually decreases as the total amount of RAM increases.
This post has been edited by rloew: 21 June 2008 - 10:51 PM



Help


Back to top











