Oberer Speicherbereich - Upper memory area
Bei der DOS-Speicherverwaltung bezieht sich der obere Speicherbereich ( UMA ) auf den Speicher zwischen den Adressen 640 KB und 1024 KB ( 0x A0000–0xFFFFF) in einem IBM PC oder einem kompatiblen Speicher . IBM hat die obersten 384 KB des 1024-KB-Adressraums der 8088- CPU für BIOS- ROM , Video-BIOS , Options-ROMs , Video-RAM, RAM an Peripheriegeräten, speicherabgebildete E / A und veraltetes ROM-BASIC reserviert .
Selbst mit Video-RAM, ROM- BIOS , Video-BIOS , Options-ROMs und E / A-Ports für Peripheriegeräte wurde ein Großteil dieses Adressraums von 384 KB nicht verwendet. Als die Speicherbeschränkung von 640 KB immer mehr zu einem Hindernis wurde, wurden Techniken gefunden, um die leeren Bereiche mit RAM zu füllen. Diese Bereiche wurden als obere Speicherblöcke ( UMBs ) bezeichnet.
Verwendung
Die nächste Stufe in der Entwicklung von DOS bestand darin, dass das Betriebssystem obere Speicherblöcke (UMBs) und den hohen Speicherbereich (HMA) verwendete. Dies geschah mit der Veröffentlichung von DR DOS 5.0 im Jahr 1990. Der in DR DOS integrierte Speichermanager EMM386.EXE konnte die meisten grundlegenden Funktionen von QEMM und vergleichbaren Programmen ausführen .
Der Vorteil von DR DOS 5.0 gegenüber der Kombination eines älteren DOS plus QEMM bestand darin, dass der DR DOS-Kernel selbst und fast alle seine Datenstrukturen in einen hohen Speicher geladen werden konnten. Dadurch blieb praktisch der gesamte Basisspeicher frei, sodass Konfigurationen mit bis zu 620 KB von 640 KB frei waren.
Die Konfiguration war nicht automatisch - freie UMBs mussten von Hand identifiziert, manuell in die Zeile aufgenommen werden, in der EMM386 von CONFIG.SYS geladen wurde , und dann mussten Treiber usw. von CONFIG.SYS und AUTOEXEC.BAT manuell in UMBs geladen werden . Diese Konfiguration war kein trivialer Prozess. Da dieses Programm durch das Installationsprogramm von QEMM weitgehend automatisiert wurde, blieb es auf dem Markt bestehen. In der Tat funktionierte es gut mit DR DOS 'eigener HMA- und UMB-Unterstützung und wurde zu einem der meistverkauften Dienstprogramme für den PC.
Diese Funktionalität wurde von Microsoft mit der Veröffentlichung von MS-DOS 5.0 im Juni 1991 kopiert . Schließlich wurden noch mehr DOS-Datenstrukturen aus dem herkömmlichen Speicher verschoben, sodass bis zu 631 KB von 640 KB frei bleiben konnten. Ab Version 6.0 von MS-DOS enthielt Microsoft sogar ein Programm namens MEMMAKER, mit dem der herkömmliche Speicher automatisch optimiert wurde, indem TSR-Programme in den oberen Speicher verschoben wurden .
In den frühen neunziger Jahren wurde die manuelle Optimierung der DOS-Speicherzuordnung zu einer hoch geschätzten Fähigkeit, die es den größten Anwendungen ermöglichte, selbst auf den komplexesten PC-Konfigurationen ausgeführt zu werden. Die Technik bestand darin, zunächst so viele UMBs wie möglich zu erstellen, einschließlich der Neuzuordnung zugewiesener, aber nicht verwendeter Speicherblöcke, z. B. des monochromen Anzeigebereichs auf Farbmaschinen. Dann mussten die vielen Unterkomponenten von DOS in der richtigen Reihenfolge in diese UMBs geladen werden, um die Speicherblöcke so effizient wie möglich zu nutzen. Einige TSR- Programme benötigten beim Laden zusätzlichen Speicher, der nach Abschluss des Ladevorgangs wieder freigegeben wurde. Glücklicherweise gab es nur wenige Abhängigkeiten zwischen diesen Modulen, so dass es möglich war, sie in nahezu beliebiger Reihenfolge zu laden. Ausnahmen waren, dass zum erfolgreichen Zwischenspeichern von CD-ROMs die meisten Festplatten-Caches nach CD-ROM-Treibern geladen werden mussten und dass die Module der meisten Netzwerkstapel in einer bestimmten Reihenfolge geladen werden mussten, wobei im Wesentlichen schrittweise durch die Schichten der OSI-Modell .
Eine grundlegende und dennoch effektive Methode zur Optimierung des konventionellen Speichers bestand darin, HIMEM.SYS als Gerät zu laden und anschließend EMM386.EXE als Gerät mit der Option "RAM AUTO" zu laden, die den Zugriff auf die UMA ermöglicht, indem Gerätetreiber als Gerätehöhe geladen werden. Diese Methode lädt die grundlegenden Speichermanager effektiv in den herkömmlichen Speicher und danach alles andere in die UMA. Herkömmliche Speicher-Vielfraß-Programme wie MSCDEX könnten auf ähnliche Weise auch in die UMA geladen werden, wodurch eine große Menge an herkömmlichem Speicher frei wird.
Windows
Die zunehmende Beliebtheit von Windows 3.0 machte die Notwendigkeit des oberen Speicherbereichs weniger relevant, da Windows-Anwendungen nicht direkt von den Basisspeicherbeschränkungen von DOS betroffen waren, DOS-Programme, die unter Windows ausgeführt wurden (wobei Windows selbst als Multitasking-Manager fungierte), dies jedoch weiterhin waren eingeschränkt. Mit der Veröffentlichung von Windows 95 wurde es immer weniger relevant, da diese Windows-Version einen Großteil der Funktionen der DOS-Gerätetreiber für unter Windows ausgeführte DOS-Anwendungen wie CD-, Netzwerk- und Soundunterstützung bereitstellt. Die Speicherzuordnung von Windows 95-DOS-Boxen wurde automatisch optimiert. In dieser Umgebung konnten jedoch nicht alle DOS-Programme ausgeführt werden. Insbesondere Programme, die versuchten, direkt vom realen in den geschützten Modus zu wechseln, funktionierten nicht, da dies im virtuellen 8086-Modus, in dem sie ausgeführt wurden, nicht zulässig war. Dieser Punkt wird jetzt von x86-Virtualisierungstechnologien wie Intel VT-x (Vanderpool) behandelt ) und AMD-V (Pacifica). Programme, die versucht haben, den Wechsel mithilfe der VCPI-API ( Virtual Control Program Interface) durchzuführen (die eingeführt wurde, um DOS-Programmen, die einen geschützten Modus benötigen, den Zugriff aus dem von einem Speichermanager eingerichteten virtuellen 8086-Modus zu ermöglichen, wie oben beschrieben), haben dies nicht getan Funktioniert nicht unter Windows 95. Es wurde nur die DPMI-API ( DOS Protected Mode Interface ) zum Umschalten in den geschützten Modus unterstützt.
Implementierung
Virtueller 8086-Modus
Obere Speicherblöcke können erstellt werden, indem der erweiterte Speicher im virtuellen 8086-Modus dem oberen Speicherbereich zugeordnet wird . Dies ähnelt der Emulation von erweitertem Speicher mithilfe von erweitertem Speicher, sodass diese Methode zum Bereitstellen von oberen Speicherblöcken normalerweise vom erweiterten Speichermanager (z. B. EMM386 ) bereitgestellt wird . Die Anwendungsprogrammierschnittstelle zum Verwalten der oberen Speicherblöcke ist in der eXtended Memory Specification angegeben .
Schatten-RAM
Auf vielen Systemen, einschließlich moderner, ist es möglich, Speicher, der für das Abschatten des Erweiterungskarten-ROM reserviert ist, als oberen Speicher zu verwenden. Viele Chipsatz behalten bis zu 384 KB RAM für diesen Zweck und da dieser RAM im Allgemeinen ungenutzt ist , kann es verwendet werden als real - Modus mit einem benutzerdefinierten Gerätetreiber, wie UMBPCI obere Speicher.
IBM XT
Auf IBM XT- Computern war es möglich, dem Motherboard mehr Speicher hinzuzufügen und ein benutzerdefiniertes Adressdecoder- PROM zu verwenden, um es im oberen Speicherbereich anzuzeigen. Wie bei dem oben beschriebenen oberen 386-basierten Speicher kann der zusätzliche RAM zum Laden von TSR-Dateien oder als RAM-Disk verwendet werden .
Mit der AllCard , einer zusätzlichen Speicherverwaltungseinheit für Computer der XT-Klasse, konnte normaler Speicher dem Adressbereich 0xA0000-EFFFF zugeordnet werden, was für DOS-Programme bis zu 952 KB ergab. Programme wie Lotus 1-2-3 , die direkt auf den Videospeicher zugegriffen haben, mussten gepatcht werden , um dieses Speicherlayout zu handhaben. Daher wurde die 640-KB-Barriere auf Kosten der Softwarekompatibilität entfernt. Diese Verwendung des oberen Speicherbereichs unterscheidet sich von der Verwendung von oberen Speicherblöcken, die zum Freigeben von herkömmlichem Speicher verwendet wurden, indem Gerätetreiber und TSRs in die oberen 384 KB des 1- MB- Adressraums verschoben wurden, jedoch die Menge des adressierbaren Speichers (640 KB) belassen wurden ) intakt.
Siehe auch
- DOS-Speicherverwaltung
- Konventionelles Gedächtnis
- Erweiterter Speicher (XMS)
- Erweiterter Speicher (EMS)
- Hoher Speicherbereich (HMA)
- Globale EMM- Importspezifikation (GEMMIS)
- LOADHIGH