Google+ Quarta Info B: MEMORIA VIRTUALE E MMU

giovedì 11 aprile 2013

MEMORIA VIRTUALE E MMU


Il ragionamento dietro alla memoria virtuale consiste nel fatto che un programma può essere più grande della memoria fisica.
Il programma viene diviso in modulo (overlay) e solo quelli necessari all’esecuzione vengono caricati in RAM mentre le restanti parti restano sul disco.
Un programma da 4 GB può girare tranquillamente su una memoria da 2GB scegliendo accuratamente quali 2GB mandare in esecuzione.
La memoria virtuale ora introduce anche il concetto di paginazione: la memoria viene divisa in partizioni dette pagine e ogni pagina è grande solitamentre 4 KByte.
In un sistema a 32 bit, ci sono 12 bit che servono per “muoversi” all’interno della pagina (2^12 = 4KB) e il restante 20 bit servono ad indicare la pagina a cui facciamo riferimento.
Da questo deduciamo che appunto con 12 bit di offset le pagine posso essere grandi massimo 4KB e che ci possono essere al massimo 2^20 pagine (1 milione di pagine).
(1 milione di pagine per 4KB l’una sono 4 giga).
Ora però l’indirizzo della pagina virtuale non corrisponde a quello della pagina reale.
Come risolvo questo problema? Sulla scheda madre c’è un componente chiamato MMU che fa da traduttore: prende l’indirizzo della pagina virtuale e lo trasfororma in indirizzo reale.
La MMU contiene appunto una tabella delle pagine che è compilata dal gestore della memoria. Il gestore della memoria, infatti, tiene conto delle pagine libere e è in grado di dire dove una pagina virtuale deve puntare sulla memoria reale.
Su un sistema a 32 bit, 12 bit vanno direttamente in memoria e 20 bit, invece, si fermano sulla MMU. Questi 20 bit compongono l’indirizzo virtuale della pagina richiesta, ma prima che la scheda di memoria onori la richiesta, questo indirizzo virtuale deve essere trasformato in indirizzo reale tramite la MMU.
Ovviamente in memoria virtuale abbiamo, ad esempio, 100 pagine virtuali, mentre in memoria reale sono 10 pagine.
Capiamo quindi che sono 10 pagine virtuali avranno un corrispettivo in memoria reale. Ogni pagina virtuale ha quindi un bit che che messo a 0 vuol dire che la pagina non è mappata, se è a 1 vuol dire che è mappata.
Cosa succede ora se per caso si deve accedere ad una pagina virtuale che non ha un corrispettivo nella memoria fisica?
In una situazione di questo genere si crea un fault di pagina: viene prelevata una pagina (algortimi di rimpiazzamento della pagine dopo) dalla memoria fisica, se è stata modificata viene riscritta su disco, altrimenti no.
Sulla sua pagina virtuale, viene messo un bit a 0 che sta a significare che quella pagina virtuale non ha più un corrispettivo nella memoria reale.
Ora viene presa la pagina virtuale a cui si deve accedere e viene scritta sopra la precedente pagina; si modifica la MMU per far puntare quella pagina virtuale a quella pagina fisica e viene messo un bit a 1 per dire che quella pagina virtuale ha un corrispettivo nella memoria reale.
Con un sistema a 32 bit, ci sono 2^20 pagine virtuali che corrispondono a oltre un milione di pagine virtuali.
L’indirizzo della pagina virtuale viene usato come indice della tabella delle pagine e il contenuto della corrispondente cella è l’indirizzo di memoria fisica.
In un sistema a 64 bit, il numero di pagine virtuali è 2^52 che sono moltissime.
Con così tante pagine virtuali, la velocità e la stabilità dal sistema sono seriamente compromesse e per questo si utilizzano metodi diversi per l’accesso alle istruzioni.
Un metodo è la tabella delle pagine inverse.
Nella tabella delle pagine normale, ci sono tante celle quante sono le pagine virtuali.
Nella tabella della pagine invertite, ci sono tante celle quante sono le pagine fisiche: la CPU emette un indirizzo a 32 bit, 12 di offset e 20 di pagina virtuale.
Al posto di andare all’indice dettato da 20 bit, si cerca nel contenuto delle celle il corrispettivo numero dei 20 bit e quando lo si trova si prende l’indice e quella è la pagina fisica.
Se non si trova l’elemento abbiamo un fault di pagina.
In sostanza le pagine fisiche fanno da indici per la tabella e quelle reali da contenuto.


Nessun commento:

Posta un commento