Quantcast
Channel: Appunti al volo » appunti di sistemi
Viewing all articles
Browse latest Browse all 3

La memoria virtuale con la segmentazione paginata

$
0
0

Nella paginazione tutti i blocchi hanno una propria dimensione che porta ad un cattivo utilizzo della memoria nell’ultimo blocco. Nella segmentazione invece ad ogni programma è associata la giusta quantità di memoria, ma in RAM si vengono a creare degli spazi vuoti tra un segmento e l’altro.
L’ultima soluzione di gestione della memoria virtuale elimina gli scompensi dei due tipi precedenti di gestione della memoria.

La struttura
Suddivide ogni programma in segmenti e a sua volta lo suddivide in pagine della stessa dimensione di 4 Kb, così da evitare eccessivi sprechi di memoria nell’ultima pagina.
Di volta in volta viene caricata in RAM solo la pagina che effettivamente serve alla CPU in una posizione qualsiasi. Non necessariamente le pagine dello stesso programma devono essere memorizzate vicine tra loro. La dimensione delle pagine è fissa così che neanche in RAM si hanno sprechi di memoria. Si elimina così il problema della frammentazione interna e esterna.

Il funzionamento
La CPU genera un indirizzo virtuale composto dal numero del segmento virtuale, il numero della pagina e l’offset, come è riportato nell’immagine qui sotto.
L’MMU preleva il numero del segmento e accede in tabella, se il bit di presenza è a 1 allora la tabella delle pagine è già caricata in RAM, in caso contrario il S.O. provvede a caricarla.
Si accede alla pagina richiesta per mezzo dell’indirizzo della pagina in questo modo:
indirizzo della pagina=indirizzo della prima riga+n° della pagina * dimensione della riga
Si effettua in questo modo un accesso diretto in tabella e si compone l’indirizzo fisico. Arrivati a questo punti sia in caso di HIT che di MISS il calcolatore procede in modo analogo al sistema di gestione della memoria virtuale con la paginazione.


Viewing all articles
Browse latest Browse all 3

Latest Images

Trending Articles