Befehle unter MS-DOS 5.0

E-Books


Expanded Memory



MS-DOS-Programme, die mehr Speicher benötigen, als im konventionellen Arbeitsspeicher (bis 640 KB) verfügbar ist, können Expanded Memory verwenden, wenn bei der Erstellung des Programms diese Möglichkeit berücksichtigt wurde.
Expanded Memory kann einem Programm auf zwei Arten zur Verfügung stehen:
Es wird eine Zusatzkarte mit Expanded Memory installiert. Für diesen Zusatzspeicher gibt es im 1-MB-Bereich keine Adressen, d.h. daß der Prozessor auf die Informationen im Expanded Memory nicht direkt zugreifen kann. Aus diesem Grund wird mit der Zusatzkarte ein Zusatztreiber mitgeliefert - der Expanded Memory Manager (EMM).
Der EMM-Treiber ist zusammen mit der Elektronik der Zusatzkarte für die Bereitstellung der Informationen im Expanded Memory verantwortlich. Dazu wird der gesamte Zusatzspeicher in Blöcke von 16 KB (Seiten bzw. Pages) unterteilt. Im konventionellen Speicher wird im UMB-Bereich (384 KB nach der 640-KB-Grenze) ein RAM Speicher von 64 KB installiert, der als Seitenrahmen bezeichnet wird.
Es ist zu beachten, daß sich der RAM-Speicher physisch auf der Speicherzusatzkarte befindet, daß ihm aber Adressen im UMB-Bereich zugeordnet werden, wodurch der Prozessor in die Lage versetzt wird, auf diesen Speicher zuzugreifen.
Benötigt ein Programm Informationen aus dem Expanded Memory, beauftragt es den EMM-Treiber, die entsprechende Seite (16 KB) aus dem Zusatzspeicher in den Seitenrahmen zu übertragen. Anschließend konnen die Informationen vom Programm bearbeitet werden.
Es können zu einem bestimmten Zeitpunkt maximal vier Seiten im Seitenrahmen vorhanden sein. Wird eine weitere Seite benötigt, muß zuvor eine der vier Seiten aus dem Seitenrahmen in den Zusatzspeicher zurückgeschrieben werden.
Folgende Punkte sind bei dieser Form von Expanded Memory zu beachten:
- Es können maximal 32 MB (EMS 4.0, Expanded Memory Specification) als Zusatzspeicher installiert werden.
- Es kann mit allen Prozessoren (von 8086/8088 bis 80486) verwendet werden.
- Da die Übertragung der Seiten zwischen dem Seitenrahmen und dem Zusatzspeicher Zeit erfordert, erhöht sich etwas die Ausführungszeit dieser Programme.
Extended Memory kann für die Simulation von Expanded Memory verwendet werden. In diesem Fall ist ein Prozessor ab Modell 80386 aufwärts und ein spezieller EMM-Treiber erforderlich. In der MS-DOS-Version 5.0 übernimmt der Treiber EMM386.EXE, der standardmäßig beim System dabei ist, dessen Aufgaben.
Wird Expanded Memory simuliert, muß ebenfalls ein Seitenrahmen von 64 KB im UMB-Bereich definiert werden. Im Gegensatz zu der zuerst beschriebenen Form werden aber die Seiten aus dem simulierten Expanded Memory nicht in den Seitenrahmen übertragen, da eine neue Funktion des Prozessors 80386 eingesetzt werden kann:
Wenn der 80386 intern eine Speicheradresse gebildet hat, wird diese, bevor auf den Speicherplatz tatsächlich zugegriffen wird, über die Paging Unit des Prozessors geschickt. In dieser Funktionseinheit kann die erhaltene Adresse gegen eine andere ausgetauscht werden, d.h. daß der Zugriff in Wirklichkeit auf einen anderen Speicherplatz erfolgt, als das Programm annimmt.
Solange der Prozessor diese Methode konsequent durchführt und die Speicherbereiche nicht durcheinander bringt, hat diese Tatsache für das Anwenderprogramm keine Bedeutung.
Ein Programm, daß diese Form von Expanded Memory verwendet, beauftragt den EMM-Treiber, eine bestimmte Seite in den Seitenrahmen zu laden. Der Treiber teilt der Paging Unit mit, wo im Extended Memory diese Seite abgelegt ist und welche Adresse im Seitenrahmen er dem Programm als Startadresse der Seite zurückgibt; die Seite wird aber nicht übertragen.
Der Treiber meldet dem Programm zurück, daß die Seite bei einer bestimmten Adresse in den Seitenrahmen geladen wurde, worauf dieses auf diesen Bereich zugreift.Die Paging Unit des Prozessors erkennt den Zugriff auf eine umzuwandelnde Adresse und schickt die geänderte Adresse für den richtigen Speicherplatz los.
Beachten Sie, daß beim simulierten Expanded Memory in dem Bereich, der als Seitenrahmen festgelegt ist, kein Speicher existiert, genauer gesagt: keiner existieren darf.
Wir weisen ausdrücklich darauf hin, daß ein Programm mit beiden Formen von Expanded Memory nur arbeiten kann, wenn es die Kommunikation mit dem EMM-Treiber durchführen kann, d.h. der Programmierer muß diese Verwendung von Expanded Memory explizit programmieren. In einem besonderen Kapitel wollen wir Ihnen die Programmierung des Expanded Memories im Detail erklären.

(c) Jürgen Richter