| Zeile 29: | Zeile 29: | ||
Da DOS ein [[Real Mode|Real-Mode]]-Betriebssystem ist, ist der direkt adressierbare Speicher auf etwa ein Megabyte beschränkt. Da der Bereich zwischen 640 kB und 1 MB für das BIOS und zum Einblenden von Hardware reserviert ist (die ''Upper Memory Area''), bleiben für Treiber und Anwendungen 640 kB an ''konventionellem Speicher'' übrig. Weil das auf Dauer etwas zu wenig war, wurden Methoden eingesetzt, um auch auf die höheren Speicherbereiche zugreifen zu können. | Da DOS ein [[Real Mode|Real-Mode]]-Betriebssystem ist, ist der direkt adressierbare Speicher auf etwa ein Megabyte beschränkt. Da der Bereich zwischen 640 kB und 1 MB für das BIOS und zum Einblenden von Hardware reserviert ist (die ''Upper Memory Area''), bleiben für Treiber und Anwendungen 640 kB an ''konventionellem Speicher'' übrig. Weil das auf Dauer etwas zu wenig war, wurden Methoden eingesetzt, um auch auf die höheren Speicherbereiche zugreifen zu können. | ||
| − | Der Treiber himem.sys stellt gemäß der ''Extended Memory Specification'' den Zugriff auf verschiedene Arten von hohen Speicherbereichen zur Verfügung: | + | Der Treiber himem.sys stellt gemäß der ''Extended Memory Specification'' (XMS) den Zugriff auf verschiedene Arten von hohen Speicherbereichen zur Verfügung: |
* Die ''High Memory Area'' (HMA) bezeichnet den 65520 Bytes großen Bereich ab 1 MB. Der Zugriff darauf wird ermöglicht, indem das [[A20-Gate]] aktiviert wird, so dass der Bereich innerhalb des im Real Mode adressierbaren Bereichs liegt. | * Die ''High Memory Area'' (HMA) bezeichnet den 65520 Bytes großen Bereich ab 1 MB. Der Zugriff darauf wird ermöglicht, indem das [[A20-Gate]] aktiviert wird, so dass der Bereich innerhalb des im Real Mode adressierbaren Bereichs liegt. | ||
| − | * Je nach Hardware freie | + | * Je nach Hardware freie Speicherbereiche in der ''Upper Memory Area'' zwischen 640 kB und 1 MB. Die Adressierung im Real Mode stellt hier kein Problem dar. |
| − | * ''Extended Memory Blocks'' beginnen nach dem Ende der HMA. Die API erlaubt es, im erweiterten Speicher Blöcke zu reservieren, freizugeben und zu kopieren (die Speicherverwaltung schaltet dazu kurzzeitig in den [[Protected Mode]]). Eine direkte Adressierung des Speichers ist im Real Mode nicht möglich, so dass die API-Funktion zum Kopieren | + | * ''Extended Memory Blocks'' beginnen nach dem Ende der HMA. Die API erlaubt es, im erweiterten Speicher Blöcke zu reservieren, freizugeben und Daten hinein/heraus zu kopieren (die Speicherverwaltung schaltet dazu kurzzeitig in den [[Protected Mode]]). Eine direkte Adressierung des Speichers ist im Real Mode nicht möglich, so dass die API-Funktion zum Kopieren der Daten in den konventionellen Speicher benutzt werden muss bevor mit dem Inhalt gearbeitet werden kann. Darüber hinaus kann so ein Extended Memory Block auch gelockt werden was ihn in seiner Größe unveränderlich macht aber dafür auch als nicht verschiebbar deklariert. Von einem gelockten EMB bekommt man auch die physische Adresse und kann ihn so für eigene Protected Mode Spielchen benutzen (alle DOS-Extender machen das so wenn sie auf einem DOS-System gestartet werden in dem nur himem.sys aber nicht emm386.exe läuft). |
| − | Mit dem ''Expanded Memory'' stellt emm386.exe einen anderen Mechanismus zur Verfügung, um auf hohen Speicher zuzugreifen. Dazu wird mindestens ein 386er benötigt, denn der Prozessor wird dazu dauerhaft in den 32-Bit-Protected-Mode geschaltet, so dass [[Paging]] verfügbar ist und hoher Speicher in das erste Megabyte des virtuellen Adressraums eingeblendet werden kann. Dadurch wird das bei XMS nötige Kopieren vermieden. Das eigentliche System und alle Programme laufen mit emm386.exe im [[VM86]]-Modus. | + | Mit dem ''Expanded Memory'' (EMS) stellt emm386.exe einen anderen Mechanismus zur Verfügung, um auf hohen Speicher zuzugreifen. Dazu wird mindestens ein 386er benötigt, denn der Prozessor wird dazu dauerhaft in den 32-Bit-Protected-Mode geschaltet, so dass [[Paging]] verfügbar ist und hoher Speicher pageweise in das erste Megabyte des virtuellen Adressraums eingeblendet werden kann. Dadurch wird das bei XMS nötige Kopieren vermieden. Das eigentliche System und alle Programme laufen mit emm386.exe im [[VM86]]-Modus. |
==Weblinks== | ==Weblinks== | ||