Ja äh, ein kompliziertes Thema, nicht? Also nochmal: EMMx86 ist dazu da, die Speicherart EMS, die es im Gegensatz zum XMS schon seit 286ern gibt, bereitzustellen. Es handert sich bei *MS nicht um physikalischen Speicher, sondern um die Art, wie Software den Speicher anspricht, also virtuellen Speicher. Auf 286ern gibt es Speicher oberhalb 1024KB nur in Form von Steckkarten mit 1-4MB zusätzlichem RAM, der nur durch ein "Fenster", einen Speicherblock von 64KB im normalen Speicher angesprochen werden konnte: Die Blocks des Zusatzspeichers werden nach Bedarf auf den Block des Fensters "gespiegelt": Expanded ("entfaltet") Memory Service. EMMx86 sucht sich den Platz für dieses Fenster normalerweise im Bereich zwischen 640 und 1024 KB (UpperMemoryBlock), den per Konvention nur vertrauenswürdige Treiber (Firmware von BIOS, Graka und anderer Peripherie, und EMM386), aber weder DOS noch Anwendungen benutzen dürfen.
Etwas verwirrend ist, daß EMMx86 übriggebliebenes RAM im UMB als EMS verfügbar macht (und zwar exclusiv reserviert, kann mit "X=Adressbereich" und "I=Adressbereich" konfiguriert werden). Und natürlich kann es auch noch komplizierter sein, z.B. bedeutet "EMM386 noems" folgendes:
1.) Die freien UMBs werden nicht für EMS benutzt, sondern nur der Onboard-Speicher >1024KB (der technisch leichter ansprechbar ist, sodaß der oben beschriebene Block wegfallen kann und man 64KB gewinnt).
2.) Onboard-RAM >1024MB ist wie gehabt für EMS verfügbar (und wird normalerweise automatisch zugeteilt, bleibt also auch für XtendedMemoryService, sprich Windows, himem, DOS4GW, DPMI, etc. nutzbar).
3.) Die freien UMBs stehen als "Oberer Speicher", wie es mem.exe von MS-DOS7 ausdrückt, Anwendungen, die konventionellen Speicher brauchen, zur Verfügung. Ist nicht ganz so stabil wie echter konventioneller Speicher, aber artige Module kann man mit loadhigh=xxx in den oberen Speicher laden, oder auch das gesamte DOS, soweit es reinpaßt, mit dos=high,umb.
Viele neuere Programme, die viel Speicher brauchen, pfeifen auf die 286er Kompatibilität, z.B. Windows 3.11, und benutzen den schnelleren und simpleren XMS, der durch himem.sys, DOS4GW, DPMI etc. angesprochen werden kann. EMM386 ist da dann wohl manchmal im Weg, und es gibt auch viele Programme, die bewußt nicht-Emm386-kompatibel sind. So!