[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: