Beachten Sie, daá dieser Adreáraum auf jedem Rechner unabhngig davon besteht, wieviel physischer Speicher im Rechner tatschlich installiert ist. Einer der groáen Vorteile des 80386-Prozessors gegenber frheren Prozessoren ist, daá die Prozessor-Hardware die bersetzung von virtuellen Adressen in physische Adressen bernimmt. Dabei wird er von dem Betriebssystem (in diesem Fall &os2;) insoweit untersttzt, als dieses dem Prozessor Tabellen bergibt, in denen Umwandlungsinformationen gespeichert sind.
Um virtuellen Speicher fr mehrere gleichzeitig laufende Prozesse verwalten zu knnen, unterteilt &os2; den gesamten Adreáraum von 4 GB in sogenannte Arenen.
4096 MB -----------------------------------------------------
System-Arena
512 MB -----------------------------------------------------
Gemeinsame (shared) Arena
variabel ---------------+-----------+---------------
Private | Private | Private
Arena | Arena | Arena
Prozeá 1 | Prozeá 2 | Prozeá 3
0 MB -----------------+-----------+---------------
Die System-Arena ist fr Code reserviert, der auf Ring 0 luft, d.h.
Gertetreiber und der &os2;-Kernel selbst. Anwendungen knnen auf diesen Speicher
nicht zugreifen.
Im Gegensatz dazu stehen die gemeinsame und die privaten Arenen den Anwendungen zur Verfgung.
Whrend hinter der System-Arena und den gemeinsamen Arenen fr alle Prozesse der gleiche physische Speicher steht, sind die privaten Arenen fr jeden Prozeá unterschiedlich. Jede Anwendung hat ihre eigene private Arena fr Code und Daten. Die gemeinsame Arena hingegen wird fr Code und Daten benutzt, die mehreren Prozessen gemeinsam ist; so werden z.B. DLLs in die gemeinsame Arena geladen.
Die Grenze zwischen gemeinsamer Arena und den privaten Arenen ist variabel und hngt davon ab, wieviel gemeinsamer Speicher derzeit im System benutzt wird. Dies ist der Grund, warum das System manchmal "Zu wenig Speicher" meldet, wenn sehr viele DLLs geladen sind. Tatschlich hat das System nicht zuwenig physischen Speicher (da es ja ansonsten die Auslagerungsdatei vergráern wrde), sondern es ist der Adreáraum vollstndig belegt.
Die OS/2-Kernel von 2.0 bis 4.5 (der Aurora-Kernel) hatten eine fixe Grenze bei 512 MB fr den Speicher, der fr Anwendungen verwendbar war. Der Grund hierfr lag in der Untersttzung fr 16-Bit-Programme, die nicht ohne weiteres auf Speicher ber dieser Grenze zugreifen knnen.
Dies hat sich mit dem Aurora-Kernel gendert, der es Anwendungen erlaubt,
Speicher ber der 512-MB-Grenze anzufordern, wenn in der Datei &cfgsys;
der Befehl VIRTUALADDRESSLIMIT mit einem Wert gráer als 512
angegeben wird. Der Adreáraum sieht dann wie folgt aus:
4096 MB ---------------------------------------------
System-Arena
VIRTUALADDRESSLIMIT ---------------------------------
Arena fr hohen Speicher
(gemeinsam und privat)
512 MB ---------------------------------------------
Gemeinsame (shared) Arena
variabel ---------------+-----------+---------------
Private | Private | Private
Arena | Arena | Arena
Prozeá 1 | Prozeá 2 | Prozeá 3
0 MB -----------------+-----------+---------------
Wie Sie sehen, wird der Raum zwischen der System-Arena und der
gemeinsamen Arena "hoher Speicher" (high memory) genannt und
wird wiederum in gemeinsamen und privaten Speicher unterteilt.
Dieser Adreáraum wird nur einer Anwendung zugeordnet, wenn diese
dies ausdrcklich anfordert. Folglich hat diese Erweiterung des
Adreáraums nur Auswirkungen auf Anwendungen, die diese Erweiterung
ausdrcklich nutzen. Zum Beispiel knnen Sie Java den hohen
Adreáraum nutzen lassen, indem Sie SET JAVA_HIGH_MEMORY=1
in der Datei &cfgsys; angeben.
Trotzdem hat die Benutzung von hohem Speicher Nebenwirkungen. Wie oben erwhnt, kann der hohe Speicher von 16-Bit-Code nicht benutzt werden. Daher bentigt man z.B. eine 32-Bit-Version von TCP/IP (Version 4.1 oder neuer), wenn man hohen Speicher mit Java nutzen will.
Hinzu kommt, daá die System-Arena um so kleiner wird, je hher
Sie VIRTUALADDRESSLIMIT festlegen. Sehr viel hoher Speicher
kann daher die Anzahl der Prozesse reduzieren, die vom System verwaltet
werden knnen.