Memoria Paginata

Con questo schema la memoria viene divisa in pagine tutte della stessa grandezza: i programmi non hanno bisogno di sapere nulla su come è organizzata la memoria e non devono avere nessuna struttura interna particolare; l'esatta ubicazione e disposizione fisica della memoria che occupano non li riguarda e tutto il sistema di memoria virtuale è completamente gestito dalla MMU attraverso un complesso sistema di registri associativi.

 

Proprio questo sistema di registri è il punto debole di questo tipo di meccanismo: se il numero delle pagine è molto grande (pagine di piccole dimensioni, oppure grandi quantità di memoria virtuale da emulare) il meccanismo associativo può diventare troppo complesso, rallentando sensibilmente l'accesso alla memoria (e quindi tutto il sistema).

Un possibile rimedio è quello di aumentare la dimensione della pagine di memoria, al prezzo di un maggior spreco di memoria stessa ("frammentazione interna": più grandi sono le pagine, più aumenta il numero di pagine parzialmente vuote e più spazio viene sprecato).

 

Più dettagliatamente il meccanismo di gestione della memoria virtuale con paginazione è il seguente. L'immagine di un processo è suddivisa in pagine di dimensione fissa. La memoria principale (RAM) è suddivisa anch'essa in "pezzi", della stessa dimensione delle pagine, detti page frame. Ad ogni processo è associata una tabella, mantenuta in memoria principale o secondaria a seconda delle dimensioni, detta tabella delle pagine. Ogni entrata (riga) della tabella delle pagine contiene:

Il numero di pagina per quella riga, Il bit present (riferito) , Il bit modified (modificato), Il numero di frame corrispondente.

 

Gli indirizzi logici sono rappresentati dalla coppia (# di pagina, offset). La traduzione avviene in questo modo: si trova la riga corrispondente al numero di pagina dell'indirizzo logico, se il bit present è 0, la pagina non è presente in memoria principale, si genera quindi un Page Fault e si attende che la pagina sia caricata in memoria, infine si genera l'indirizzo fisico (nr. frame, offset)

Il bit modified indica invece se la pagina è stata modificata o meno. Infatti se una pagina non è stata modificata, al momento di effettuare lo swap nella memoria secondaria, non ha senso riscrivere la pagine su disco. Risparmiando così tempo, e migliorando in parte le prestazioni.

 

 

 

torna indietro