Si noti che questo spazio di indirizzamento esiste a prescindere dalla quantit… di memoria fisica installata nel sistema. Uno dei vantaggi maggiori del processore 80386 (rispetto ai suoi predecessori) Š infatti la capacit… del processore di convertire un indirizzo virtuale in un indirizzo fisico RAM hardware -- con un minimo aiuto da parte del sistema operativo (nel nostro caso &os2;), che deve solo fornire le tabelle processore dove registrare i dati di conversione.
Per poter gestire la memoria virtuale rispetto ai vari processi attivi nel sistema, &os2; divide i 4 GB dello spazio di indirizzamento virtuale in arene.
4096 MB -----------------------------------------------------
arena di sistema
512 MB -----------------------------------------------------
arena condivisa
variabile ----------------+------------+---------------
arena | arena | arena
privata | privata | privata
processo 1 | processo 2 | processo 23
0 MB -------------------+------------+---------------
L'arena di sistema Š lo spazio riservato al codice che lavora a ring 0,
cioŠ i programmi di controllo per i dispositivi e il kernel &os2; stesso. Le
applicazioni normali non possono accedere a quest'area.
Al contrario, sia l'arena condivisa che quelle private sono accessibili a tutte le applicazioni.
Mentre le arene di sistema e condivisa sono ospitate nelle stesse pagine di memoria fisica, l'arena privata Š differente per ogni processo: ciascuna applicazione ha infatti la sua memoria privata riservata (codice e dati). L'arena condivisa Š invece utilizzata per codice e dati che possono essere condivisi tra le applicazioni: le DLL, per es., vengono tutte caricate in quest'area.
Il confine tra l'arena condivisa e quelle private Š variabile e dipende dalla quantit… di memoria condivisa usata dal sistema. E' infatti possibile "esaurire la memoria" del sistema caricando troppe DLL. Nella realt…, in un caso del genere il sistema non ha affatto esaurito la memoria fisica (nel qual caso verrebbe semplicemente allargato il file di appoggio); si Š invece esaurito lo spazio di indirizzamento.
In tutti i kernel &os2; dal 2.0 al 4.5 escluso (il kernel Aurora), il limite per la memoria riservata alle applicazioni era fisso a 512 MB, per consentire un facile supporto per le applicazioni 16 bit, che avrebbero avuto difficolt… ad accedere alla memoria al di sopra di quella linea.
Questo limite Š stato modificato a partire dal kernel Aurora, che consente
alle applicazioni di allocare memoria oltre la linea dei 512 MB, se
VIRTUALADDRESSLIMIT in &cfgsys; Š impostato
ad un valore superiore a 512.
In questo caso, lo spazio di indirizzamento appare cosŤ:
4096 MB ---------------------------------------------
arena di sistema
VIRTUALADDRESSLIMIT ---------------------------------
arena memoria alta (condivisa e privata)
512 MB ---------------------------------------------
arena condivisa
variabile ----------------+------------+---------------
arena | arena | arena
privata | privata | privata
processo 1 | processo 2 | processo 23
0 MB -------------------+------------+---------------
Come si vede chiaramente, lo spazio tra l'arena di sistema e
quella condivisa si chiama "memoria alta", ed Š diviso anch'esso
tra arena condivisa e arene private. La memoria alta Š assegnata
solo alle applicazioni che la richiedono esplicitamente, perci•, anche se abilitata,
pu• essere utilizzata solo da quelle applicazioni che ne prevedono l'esistenza.
La macchina virtuale Java, per esempio, usa questa arena "alta" se si
specifica SET JAVA_HIGH_MEMORY=1 in
&cfgsys;.
Abilitare la memoria alta ha per• anche delle controindicazioni. Come si Š detto, questa regione non Š accessibile dal codice a 16 bit. Per questo motivo, se si usa la memoria alta con Java, bisogna usare un'implementazione a 32 bit del TCP/IP (qualunque versione dalla 4.1 in su).
Inoltre, pi— elevato Š il valore VIRTUALADDRESSLIMIT,
minore Š lo spazio per l'arena di sistema; Š per questo motivo che
aumentare il limite per l'indirizzamento virtuale pu• ridurre il numero
di processi disponibili.