Und das reichte den ersten Versionen von z.B. Wordstar oder dBase II. Diese wurden einfach von CP/M auf DOS umgesetzt und mussten vorher auch unter CP/M mit 64KiB RAM auskommen. Der Nachfolger XT besaß bereits standardmäßig 128KiB RAM, wurde jedoch meist mit “üppigen” 256KiB bestellt.
Ab Mitte der 1980iger wurden die Ansprüche der Anwender an das Betriebssystem DOS immer höher, denn die Anwendungen erhielten mit jeder neuen Version zusätzliche speicherfressende Features. Speicherresidente Programme (TSR, z.B. Borland’s Sidekick) und Treiber für zusätzliche Adapter (z.B. Sound- und Netzwerkkarten) verursachten zusätzlichen Speicherbedarf, und so wurde die 640 KiB Speichergrenze wider Erwarten doch zum Problem. MS, IBM und andere findige Entwickler erkannten dies und begaben sich auf die Suche nach zusätzlichem Speicher, um das Problem zu lösen oder wenigstens zu mildern. Die Nachfolge-CPU Intel 80286 kam im IBM AT 5170 zum Einsatz und konnte bis zu 16MiB Speicher ansprechen. Um kompatibel zur Vorgänger-CPU zu bleiben, allerdings nur im sogenannten Protected Mode. Normalerweise lief der 80286 unter DOS aber im “Real Mode” und verhielt sich dann wie ein höher getakteter 8088/8086. Wurde die CPU von einer Anwendung in den “Protected Mode” geschaltet, dann bestand die Möglichkeit, nicht nur Speicher oberhalb der 1MiB Grenze zu adressieren sondern auch die 384 KiB zu nutzen, die zwischen 640 KiB (ab 0xA000) und unterhalb 1MB lag. Dieser Speicherbereich war für das BIOS des IBM PC, das BIOS von Adapterkarten und den Bildschirmspeicher vorgesehen. Der benötigte Speicherbereich für diese Komponenten musste noch unter der 1MiB-Grenze liegen, damit die 80xx-CPU diesen auch adressieren konnte. In den meisten Konfigurationen wurden diese 384KiB aber nur teilweise benötigt. So bot sich die Möglichkeit, in die ungenutzten Bereiche zumindest TSR- und Treiberprogramme auszulagern, um die wertvollen 640KiB DOS Speicher weitgehend für die eigentlichen Anwendungen freizuhalten.
Durch diese Tricks wurde die Konfiguration der Speicherverwaltung von DOS im Laufe der Zeit recht komplex und es gibt es ziemlich viele Begriffe, deren Bedeutungen verstanden werden wollen.
Kurze Zusammenfassung bis hierher: unter 640KiB, das ist der “konventionelle Speicher”, hier hat DOS die vollständige Kontrolle. Den Bereich über 640KiB (0xA0000) bis zur 1024KiB Grenze (0xF0000) könnte DOS zwar noch adressieren, aber hier gibt es – auch bei Rechnern, die mit 1MB RAM und mehr ausgestattet sind – normalerweise kein durch DOS ansprechbares RAM. Dieser Adressbereich wird als UMA (Upper Memory Area) bezeichnet und ist reserviert: der Bildschirmspeicher der Grafikkarte, das eigene BIOS von Adaptern (z.B. SCSI-Controller, Netzwerkkarte) und das PC-BIOS selbst müssen – wie bereits erwähnt – zwingend in einen für DOS adressierbaren Adressbereich unter der 1 MB – Grenze eingeblendet (gemapped) werden.
Extended Memory
Damit DOS (ab der Version 5.0) auf RAM jenseits der 1024KiB Grenze zugreifen kann, muss eine CPU vom Real Mode (der Standard-Modus, in dem DOS normalerweise läuft) in den sogenannten Protected Mode umgeschaltet werden. Wie erwähnt gibt es diesen Modus seit dem 80286, in einer pratikableren Implementierung erst ab dem i386. Um die freien Bereiche der UMA als RAM nutzen zu können benötigt man reales RAM, das dort eingeblendet werden kann und Treiberprogramme wie z.B. EMM386, 386Max, Qemm oder UMBPCI. Alle benutzen den “Protected Mode” und können so auf realen Speicher oberhalb der 1MB Grenze (Extended Memory) zugreifen, um in den nicht belegten Bereichen der UMA (UMB, Upper Memory Blocks) weiteren für DOS-Programme adressierbaren Speicher einzublenden. Dazu muss der Bereich über 1MiB (Extended Memory) aber vorher durch einen weiteren Treiber – im Normalfall HIMEM.SYS – zugänglich gemacht werden. HIMEM.SYS stellt ihn nach der Extended Memory Specification (XMS) zur Verfügung und übernimmt die Verwaltung des Zugriffs der einzelnen Programme. XMS-Speicher kann von DOS Programmen neueren Datums, die auf DPMI (‘DOS Protected Mode Interface’) basieren, auch direkt benutzt werden.
Die nachfolgende Speicheraufteilung ist nur beispielhaft, da sie abhängig von der verwendeten Grafikkarte (CGA, EGA, Hercules, VGA), dem Vorhandensein von Zusatzkarten mit eigenem BIOS oder dem Computermodell ist (die IBM PS/2 Modelle belegen mit ihrem BIOS den oberen Teil der UMA).