Zum Inhalt springen

Diskussion:Expanded Memory Specification

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
Abschnitt hinzufügen
aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 7 Tagen von Y2kbug in Abschnitt EMS im RAM > 1MB auf 286?

EMS im RAM > 1MB auf 286?

[ 1MB auf 286?">Quelltext bearbeiten]

Dafür hätte ich gerne einen Beleg, dass es einen solchen Treiber jemals gab. Denn für das "Einblenden" von RAM >1 MB in den "upper memory" Bereich hätte es Hardwareunterstützung gebraucht. --RokerHRO (Diskussion) 09:47, 18. Dez. 2024 (CET)Beantworten

https://www.dosdays.co.uk/topics/ht12_xms_ems.phpAndreas 11:14, 18. Dez. 2024 (CET)Beantworten
Sag ich ja: Braucht spezielle Hardware, in dem Falle ein Chipsatz, der Memory Mapping in Hardware beherrscht. Standard war so ein Chipsatz leider nicht. Aber von mir aus kann das gerne im Artikel erwähnt werden. (nicht signierter Beitrag von RokerHRO (Diskussion | Beiträge) 16:31, 18. Dez. 2024 (CET))Beantworten
Das ist aber genau, wie EMS funktioniert: über eine Hardware-Erweiterung. Erst mit XMS wird "on-board"-RAM verwendet. Es ist allerdings möglich, erweiterten Speicher (Extended Memory, XMS) als EMS zu emulieren, auch auf einem 286er. Siehe https://dfarq.homeip.net/dos-memory-management-on-a-286/ -- Zitat:
Emulating EMS or expanded memory
On 386 and newer systems, you manage upper memory blocks and emulate expanded memory with a driver called EMM386.exe. A similar driver does exist for 286 systems, called EMM286.exe. It lacks upper memory capability, but it will emulate expanded memory with extended memory if you know or think you may run software that uses that memory type.
Aber EMS selbst war immer als Hardware-Speichererweiterung gedacht, denn EMS entstand ja auf 8088/8086-PCs. Auch auf 286ern, wo es ja bereits einen 16-Bit-Protected-Mode gibt und damit auch segmentierten Speicher von bis zu 16 MB, wird diese Technik weiterverwendet, weil so gut wie alles damals eben noch im Real Mode lief. DOS kannte keinen Protected Mode, und die EMS-Speichererweiterungskarten wurden vielfach weiterhin genutzt. Um also auch für DOS >1-MB-onboard-Speicher (am 80286 bis zu 16 MB) verfügbar zu machen, brauchte man was neues: XMS. Weil so gut wie alle Software damals aber entweder für die 640k "Konventionellen Speicher" oder für EMS geschrieben war, lag dieser Speicher erstmal brach. Einerseits wurden daher Programme für XMS angepasst (etwa Windows 286, das mit XMS und EMS umgehen konnte.) Andererseits wurde aber auch z.B. EMM286 erfunden: XMS-Speicher (am 80286 bis zu 16 MB) können damit als EMS-Speicher zur Verfügung gestellt werden, so, als wäre eine EMS-Erweiterungskarte im System installiert. Das geht am besten, wenn der Chipsatz des 286er eine Hardware-EMS-Emulation bietet. Dafür braucht man natürlich wiederum eigene Treiber, weil das jeder Chipsatz anders macht. Es gibt aber auch allgemein die Möglichkeit, EMS in XMS abzubilden, dann jedoch mit dem Nachteil, dass 64k Speicher im Konventionellen Speicher abgezwackt werden müssen, was dann wiederum DOS-Programmen, die in den 640k des Konventionellen Speicher ablaufen müssen, wertvollen Speicher wegnimmt. Aber es geht. Siehe etwa https://www.vogons.org/viewtopic.php?t=37376 ...
Andreas 17:38, 18. Dez. 2024 (CET)Beantworten
Wie (mühsam) die Speicherverwaltung unter DOS funktioniert(e), weiß ich. Danke.
Es ging mir um die Formulierung im Artikel: "Damit wurde EMS auch für den 80286 ohne teure Zusatzkarte verwendbar." — Und das geht halt nicht, es sei denn, man legt den (das?) EMS Page Frame in den Speicher unterhalb der 640-KB-Grenze, was jedoch den eh schon knappen "low memory" weiter verknappt und somit – außer in bizarren Spezialfällen – kaum sinnvoll sein dürfte.
Darum würde ich das im Artikel gerne klarer formulieren: EMS benötigt:
  • Spezielle Zusatzhardware (EMS-KArten) + proprietären Treiber (AFAIK die ursprüngliche Idee) oder
  • Spezieller Chipsatz mit Memorymapping + proprietären Treiber oder
  • CPU mit Memorymapping und VM86-Modus (also ab 386er) + Standard-EMM386-Treiber oder
  • Notlösung: Spezialtreiber, der den EMS Page Frame ins "low memory" packt und dann den Speicher >1MiB (via XMS oder via BIOS-INT15) als "Backing storage" benutzt.
--RokerHRO (Diskussion) 12:03, 19. Dez. 2024 (CET)Beantworten
Nun ja, wenn ein Programm mit EMS-Speicher umgehen kann, dann kann man unter einem Single-User-Betriebssystem wie DOS ja mal mit EMM286 und mal ohne starten. Das Programm, das EMS verwendet, hat dann ja genug Speicher. Das Problem ist nur, dass es auch DOS-Programme gibt, die keinen EMS-Speicher (oder XMS-Speicher) verwenden, und die brauchen klarerweise so viel konventionellen RAM wie möglich. Das gleichzeitig zu Stemmen, das geht nur mit echter Hardware oder Hardware-Emulation (per Chipsatz, oder gleich einen 386 verwenden).
Die Aussage "damit wurde EMS auch für den 286 ohne teure Zusatzkarte verwendbar" ist klar richtig. Was fehlt, ist, dass es einige Chip(satz)hersteller gab, die das in ihrem Chipsatz untergebracht haben. NEAT fällt dabei auch ein. Das könnte man natürlich klarer formulieren. ‣Andreas 13:30, 19. Dez. 2024 (CET)Beantworten
Ich habe das nun überarbeitet. Quellen fehlen weiterhin. Feedback willkommen. ‣Andreas 10:20, 20. Dez. 2024 (CET)Beantworten
Nachtrag zur Funktionsweise von EMS: wo der Speicher eingeblendet wird, ist nicht festgelegt. Das kann überall sein, wo es vom verwendeten DOS und vom verwendeten Computer eben möglich ist.
EEMS ist der Vorläufer von LIM-EMS 3.2 und dazu kompatibel. Zitat aus einem Artikel vom PC Magazine (englisch):gb
  • On pre-PS/2 hardware, giving EEMS control over DOS memory requires finding an unused memory area within DOS's 640K limit that can be used for paging.
Das erwähne ich nur der Vollständigkeit halber. EMS war nicht dafür ausgelegt, innerhalb von XMS zu funktionieren. Das klappt zufällig, weil der 386er ohnehin viel für die Kompatibilität mit dem Real Mode unternommen hat, anders als der 286er. ‣Andreas 15:07, 20. Dez. 2024 (CET)Beantworten
Nachtrag: EMM286 von Jjex Software, DR DOS 6.0, Standard-80286 ohne irgend einen speziellen Chipsatz (wie NEAT): Wird HIDOS.SYS zuerst geladen (das BDOS, den DR-DOS-Kernel, in die HMA ladet und das Management von UMBs übernimmt), dann lädt der EMM286 "LIMulator" von Jjex Software (PD Freeware) die 64k-EMS-Speicherseite in die UMA. Was im konventionellen Speicher übrig bleibt, ist der 4k-Programmteil. Der Treiber ist jedoch (c) 1993. Ich kann sonst nicht viel dazu finden, aber es schaut alles danach aus, dass diese Speichertreiber für 286er zu spät kamen. 1993 war Windows 3.x bereits in Richtung 32-Bit-386 unterwegs. Auf dem 286er lief Windows nur im Standard Modus, der Erweiterte Modus und damit WfW 3.11 lief auf einem 286er sowieso nicht mehr. Insgesamt war die Situation zu Beginn der 1990er ohnehin so, dass der 386SX der bessere 286er war, weil damit der Virtual-86-Modus verfügbar war. Alles bewegte sich bereits seit längerem vom 286er weg. Diese Treiber waren daher nur für ein sehr kleines Publikum ein Thema, die Mitte bis Ende der 1980er noch einen 286er gekauft hatten und das beste herausholen wollten. Während zu anfangs noch die EMS-Speicherkarten von 8088/8086ern weiterverwendet wurden, war die Situation für 286er in den 1990ern eine ganz andere -- in der nun ein EMM286 durchaus Sinn macht... aber gleichzeitig befanden sich die 286er da bereits auf dem Abstellgleis.
Long story short: EMM286 kann das, und zwar auch auf einem Standard-286er -- unter gewissen Umständen (DOS ab Version 5.0 mit DEVICEHIGH/LOADHIGH), die erst in den 1990ern überhaupt verfügbar waren. (Und das ist, bei jeglicher Betrachtung, viel zu spät gewesen.)Andreas 23:09, 6. Jul. 2025 (CEST)Beantworten
Korrektur zum Nachtrag: Offenbar stellt das MEM-Kommando von DR DOS 6.0 (mit der "System Memory Map" /m) das falsch dar... Ich habe das ganze auch nochmals mit CheckIt 3.0 von Markt+Technik (um 1990) überprüft, und dort wird das EMS-Speicherfenster im unteren konventionellen Speicher angezeigt.
Es gibt teilweise die Möglichkeit, Speicher der HMA auch auf dem 286er als UMBs zu nutzen (und damit auch für EMM286), aber nur, wenn dort bereits RAM ist. So könnte man den Video-RAM benutzen, verliert dann aber genau diese Funktion (und bleibt z.B. im Textmodus, weil der Grafikspeicher ja für UMBs bzw. EMM286 genutzt wird). Wie man das aber aufsetzt, ob man dazu soetwas wie UMBHERC.SYS (für Hercules-Grafikkarten), nur eben für z.B. CGA, EGA oder VGA nutzt, oder ob das auch mit USE!UMBS.SYS funktionierten würde, weiß ich nicht, denn ich kann EMM286 keinen Speicherbereich zuweisen. Das heißt wohl, dass man das ganze mit DEVICEHIGH bzw. under DR DOS mit HIDEVICE "hochladen" müsste, aber ob das EMM286 überhaupt unterstützt?
Langer Rede, kurzer Sinn: ohne spezielle EMM-Treiber für genau die Hardware, die man hat, ist es wohl doch unmöglich...
Andreas 11:18, 8. Jul. 2025 (CEST)Beantworten