Jesterfox
Legende
- Registriert
- März 2009
- Beiträge
- 44.484
Jein... der Trick läuft wie folgt:DJMadMax schrieb:MS-DOS bootet und will einen Treiber laden, zwingend (!) in den konventionellen Speicher. Das tut es auch, jedoch liegt dann nicht der komplette Treiber im konventionellen Speicher, sondern nur eine Art "Verknüpfung". Diese verweist ihrerseits wiederum weiter auf den hohen Speicherbereich, wo der Treiber tatsächlich geladen wird.
Die Beschränkung auf 640kB ist eigentlich eine auf etwas mehr als 1MB und rührt aus der Kompatibilität zur ersten PC-CPU dem 8088 her, der 20 Adressleitungen für 1MB RAM und 2 Adressregister mit 16Bit, die überlappend adressierten, hatte. Adressierbar war dabei etwas mehr als 1MB, was beim 8088 einen Überlauf erzeugte und wieder ab 0 Adressierte. Daher wird das GateA20 benötigt um dieses Verhalten auch bei neueren CPUs zu triggern...
Die 640kB sind jetzt eine willkürliche Entscheidung dass ab dort der Bereich für die Hardware beginnt. Ab dieser Adresse beginnt der reservierte Bereich für die CGA/EGA/VGA Grafikkarten, danach kommen noch weitere feste Bereiche (Hercules Grafikkarte, BIOS) und freie Bereiche für Zusatzkarten (SCSI-ROM oder auch der Frame für den EMS-RAM).
Was kann man nun machen? Mit dem Himem.sys kann man den HMA (High Memory Area -> der kleine Bereich über 1MB) nutzen mittels DOS=HIGH, damit wird ein Großteil von DOS selbst in diesen Bereich geschoben. Das GateA20 steuert dabei den Zugriff auf diesen Bereich oder den Überlauf für Abwärtskompatibilität.
EMM386.EXE kann den UMB nutzbar machen, das sind die Bereiche zwischen 640kB und 1MB die nicht von Hardware belegt sind (DOS=UMB). Mittels Loadhigh oder Devicehigh kann man Treiber dorthin statt in die unteren 640kB laden. Der Zugriff kann ganz normal erfolgen, da dieser Bereich für DOS normal Adressierbar ist. Memmaker versucht dabei automatisch eine ideale Verteilung innerhalb des evtl. fragmentierten UMBs zu erreichen. Kann man aber auch von Hand probieren (mem und msd sind da dein Freund). Vor allem bietet auch EMM386 ein paar Optimierungsoptionen (z.B. Highscan um Bereiche vom BIOS mit zu nutzen, geht auf den meisten PCs aber nicht auf allen)
Ein QEMM oder ähnliches trickst dann noch mehr dran rum um den freien Speicher noch weiter zu erhöhen, kann aber in Einzelfällen auch Kompatibilitätsprobleme auslösen.
Was den Bedarf an konventionellen Speicher bei Spielen angeht... gerade so die "mittelalten" sind da die schlimmsten. Aufwändigere Spiele die noch keinen DPMS wie DOS4GW nutzen. Mit DPMS muss unten nur noch sehr wenig liegen, was halt als Brücke zum DOS benötigt wird, der Rest vom Spiel läuft dann vollständig im oberen Speicher im 32 Bit Modus der CPU.