Re: Strano file enormemente grande
On Tue, 04 Oct 2011 17:10:50 +0200, Luca Costantino wrote:
> Il 04 ottobre 2011 17:05, Walter Valenti <waltervalenti@yahoo.it> ha
> scritto:
>> Un processore 32 bit è in grado di indirizzare "direttamente" circa 1G.
>> Al di sopra si usano diversi "trucchi" per fargliela indirizzare.
>
> Questo implicherebbe registri per indirizzare la ram lunghi 30bit (2^30
> = 1G)
>
> il mio ultimo esame di architetture è stato MOLTO tempo fa, ma la cosa
> non troppo mi torna
E` una limitazione di Linux.
Di default "spacca" lo spazio virtuale di un processo in 3GB (per il
processo) e 1 GB (riservato al kernel).
Su quel 1 GB viene mappata la memoria fisica, della quale circa 900 MB
vengono usati per l'accesso diretto alla RAM, e 128 come "buffer" per
mappare i fino a 4 GB reali (un centinaio di MB alla volta, quindi questi
128 MB vengono continuamente mappati e rimappati su indirizzi fisici
diversi dalla MMU. Una specie di swap al contrario :)
Ci sono delle patch che splittano 2GB/2GB (puoi accedere direttamente a 2
GB di RAM fisica, ma un processo non potra` allocare piu` di 2 GB di
memoria virtuale) o addirittura 1GB/3GB (3G fisici, ogni processo ha al
massimo 1 GB di memoria virtuale).
O puoi abilitare il PAE e, tramite doppia indirezione, accedere fino a 64
GB di memoria (ma ogni processo e` sempre limitato a 3 GB virtuali).
Qui un po' di info:
http://kerneltrap.org/node/2450
Coi 64 bit le cose si semplificano e si complicano contemporaneamente. :)
Questo perche` con 64bit reali (quindi perdendo la possibilita` di usare
applicazioni a 32bit) hai attualmente 48 bit disponibili per
l'indirizzamento (con possibilita` di estenderlo fino a 64 bit pieni in
futuro, mentre con l'emulazione 32bit attiva hai 36 bit di spazio di
indirizzamento (64 GB reali massimi).
Bye.
Reply to: