View Single Post
Old 11-05-2006, 09:27   #122
bjt2
Senior Member
 
L'Avatar di bjt2
 
Iscritto dal: Apr 2005
Città: Napoli
Messaggi: 6817
Dunque, facciamo chiarezza.

In un S.O. a 32 bit, la quantità massima di memoria indirizzabile da un processo (COMPRESI FILES MAPPATI IN MEMORIA) è 4GB. Nei sistemi windows non server, tale memoria è divisa in 2GB per il kernel (NON UTILIZZABILI IN ALTRO MODO, ma credo che comprendano i files mappati in memoria, almeno lo spero) e 2GB per il codice ed i dati del processo utente. Sui sistemi windows server è possibile stabilire un'altra divisione fino ad un massimo di 3GB per il processo utente e 1GB per il kernel. In Linux, dipende da come si compila il kernel, ma in genere è compilato per i 3GB/1GB, che è la soluzione migliore per molti scopi. Anche qui è configurabile. Da quello postato sopra, si evince che il kernel di Mac OS X è compilato per 2GB/2GB come i sistemi windows consumer. Spero che le versioni server siano compilate per 3GB/1GB, perchè in caso di grossi DB serve più RAM per il processo (in genere il buffering lo fa il DBMS non appoggiandosi al file system). Ma i 3 GB servono anche in casi come sopra (il CAD) ed elaborazioni numeriche. Per esempio io con Matlab riesco ad allocare una singola variabile di 900MB su Linux, mentre in windows massimo di 500MB. Oltre da out of memory, anche se ce n'è molta disponibile. Allocando più variabili piccole, riesco comunque a superare questo limite (sono arrivato a 1GB di memoria virtuale occupata da Matlab), ma credo che la frammentazione dei 2GB tra codice, dati, stack ed heap, non mi consenta di sfruttare più di tanto...
__________________
0 A.D. React OS
La vita è troppo bella per rovinarsela per i piccoli problemi quotidiani...
IL MIO PROFILO SOUNDCLOUD! IL MIO CANALE YOUTUBE! IL MIO PLUGIN VST PROGRAMMABILE!
bjt2 è offline   Rispondi citando il messaggio o parte di esso
 
1