[ Allgemeines zu DOS ] [ DOS Kommandos ] [ Speichergrenzen unter DOS ] [ Die Geschichte von DOS ]
Erweiterungsspeicher
Speicheradressierung unter DOS
Seit jeher war und ist das Hauptproblem von DOS der Umgang mit dem Arbeitsspeicher. Die ersten DOS Versionen
entstammen ja bekanntlich aus einer Zeit, als Speicher sündhaft teuer
und daher rar war. Daher wurde ein Hauptspeicher von 640 Kilobytes für groß genug gehalten.
Im Gegensatz zu anderen Rechnern, in denen der gesamte Arbeitsspeicher durchgehend adressierbar ist,
schlägt sich DOS noch heute mit den Irrtümern der Vergangenheit herum. So läuft
auch heute noch direkt nach den ersten 650 Kilobytes eine Adressleitung quer durch den Arbeitsspeicher
(A-20 Gate) die früher für diverse Steuerungsaufgaben vonnöten war.
Dazu kommt, dass man den restlichen Arbeitsspeicher nicht direkt ansprechen kann, sondern sich diverser
Hilfsmittel bedienen muss. Die Rede ist von Expansionsspeicher (EMS) und Erweiterungsspeicher
(XMS)
Expansionsspeicher (Expanded Memory, EMS)
Eine Möglichkeit zu dem System Arbeitsspeicher über 640 Kilobytes hinaus hinzuzufügen,
ist die Installation von EMS. Ein Programm das EMS benutzen kann, hat keinen direkten Zugriff
auf die darin enthaltenen Informationen. Statt dessen wird EMS in Segmente von 16 Kilobytes, den sogenannten
Seiten, unterteilt. Wenn ein Programm Informationen anfordert, die sich im
EMS befinden, kopiert der EMM 4 x 16-KByte-Seiten in einen 64-KByte-Speicherbereich im konventionellen
Arbeitsspeicher (Bank-Switching). Dieser 64-KByte-Bereich wird Seitenrahmen
genannt. Ein Programm enthält seine Informationen aus dem Seitenrahmen.
Der über Bank-Switching vom EMM zur Verfügung gestellte zusätzliche Speicherraum EMS
kann nur von Programmen genutzt werden, die für die Nutzung des EMS programmiert wurden.
Erweiterungsspeicher (Extended Memory, XMS)
Erweiterungsspeicher (Extended Memory, XMS) Unter MS-DOS lässt sich standardmäßig nur
ein 1 MByte im "Real-Mode" ansprechen. D.h. der konventionelle Arbeitsspeicher von bis zu
1
MByte ist durch die Prozessoren direkt adressierbar. Bei Maschinen mit Prozessoren ab 80386/80486 lässt
sich mehr als 1 MByte durch den Chip adressieren.
Der Bereich zwischen 0 und 640 KByte ist für das normale DOS-RAM reserviert. Ab 640 KByte bis 1
MByte finden sich Grafikadapter, Netzwerkkarten und die BIOS-ROMs von Festplatten
und dem System. Das bedeutet, dass die restlichen 384 KByte bei Systemen mit 1-MByte-RAM (oder mehr),
nicht im 1-MByte-Adreßraum abgebildet werden dürfen. Dieser Bereich wird als
"hoher Speicherbereich" bezeichnet. Der hohe Speicherbereich zählt nicht zum Gesamtspeicher,
weil Programme dort keine Informationen speichern können.
In der Regel wird deshalb der restliche RAM-Bereich in den Adressraum oberhalb 1 MByte abgelegt. Dieser
Bereich wird als "Extended Memory" bezeichnet. DOS nutzt diesen Bereich
durch transferieren von Daten zwischen den DOS Puffern (Buffer) im 640-KByte-RAM und der RAM-Disk im
Extended-Memory. Hierfür lässt sich der DMA-Controller benutzen, der auf den
gesamten 16-MByte-Adreßraum zugreift. VDISK programmiert den Controller so, dass
er Daten zwischen
den Speicherbereichen transferiert. Um zu verhindern, dass verschiedene
Programme denselben Teil des Erweiterungsspeichers gleichzeitig belegen, muss der Erweiterungs-Manager
(HIMEM) installiert werden.
Normalerweise wird MS-DOS im konventionellen Arbeitsspeicher ausgeführt. Wenn das System über
XMS verfügt, kann MS-DOS darin ausgeführt werden. Dabei benutzt es die ersten 64
KByte des XMS, die als der "obere Speicherbereich (High-Memory-Area - HMA)" bezeichnet werden.
Weil nur wenige Programme den "HMA" benutzen, ist es sinnvoll, MS-DOS dort
auszuführen, so dass mehr konventioneller Arbeitsspeicher zur Verfügung steht.
Um dies zu erreichen muss in der in der Datei CONFIG.SYS
DEVICE = HIMEM.SYS
DOS = HIGH
stehen. Diese Befehle laden zuerst den Erweiterungsspeicher-Manager HIMEM und anschließend MS-DOS
in den Erweiterungsspeicher.
Anmerkung:
Wie bereits angemerkt, gibt es solche Speichergrenzen nur unter den
DOS Systemen und unter Windows ( 9.X ). Wer einmal mit anderen
Betriebssystemen die solche Grenzen nicht kennen gearbeitet hat, dem
kommen solche Engpässe unverständlich vor. Bereits solche angeblichen
"Spielerechner" wie Amiga und Atari hatten diese Krankheiten
nicht mehr und konnten für richtige Aufgaben eingesetzt werden.