Diskussion:Expanded Memory Specification
Letzter Kommentar: vor 2 Tagen von Y2kbug in Abschnitt EMS im RAM > 1MB auf 286?
EMS im RAM > 1MB auf 286?
BearbeitenDafü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)
- 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))
- 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)
- 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))
- 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)
- 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)
- Ich habe das nun überarbeitet. Quellen fehlen weiterhin. Feedback willkommen. ‣Andreas•⚖ 10:20, 20. Dez. 2024 (CET)
- 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)