La memoria paginata é una tecnica di gestione della memoria centrale che permette la multiprogrammazione e di poter utilizzare porzione di codice non contigue per un processo.

Permette inoltre di non tenere l’intero processo in memoria, ma di scambiare pagine tra memoria centrale e area di swap quando necessario.

Si separa dalla visione dello spazio logico dei processi, potenzialmente grande quanto lo spazio di indirizzamento da quello fisico, grande quanto la memroai installata.

La memoria fisica

La memoria fisica é suddivisa in frame di dimensione fissa, e quella logica in pagine di dimensione pari a quelle dei frame in cui sono allocate.

Le dimensioni dei frame dipende dall’HW. di solito sono grandezze in potenza di 2.

Gli indirizzi logici generati dalla CPU sono formati da numero di pagina (p) e offset nella pagina (d).

p é usato come indice della tabella, una per processo, che contiene le traduzioni pagina-frame.

Combinando numero di frame e offset si ottiene l’indirizzo fisico richiesto.

Il sistema operativo decide dove allocare le pagine, quindi deve mantenere una tabella dei frame per sapere quali sono vuoti e quali no.

Frammentazione esterna e interna

Con la paginazione non si ha frammentazione esterna, poiché i frame sono di dimensione fissa, tuttavia c’é una minima frammentazione interna, poiché non tutti i programmi sono grandi un multiplo della dimensione della pagina.

MMU (Memory Managment Unit)

Le traduzioni in indirizzi logici in fisici, sono svolte in HW dall’MMU. Con tabelle delle pagine piccole, queste possono essere caricate in registri ad alta velocitá, l’OS carica solo l’indirizzo, ció significa che ogni accesso in memoria, ne richiede un altro per recuperare la traduzione.

TLB (Traslator Lookaside Buffer)

Per ridurre il calo di prestazioni si usa un TLB, una cache che mantiene le traduzioni recenti, evitando la maggiorparte dei doppi accessi. E’ una memoria associativa, veloce e costosa.

Ogni entry della memoria associativa mantiene anche un identificatore dello spazio di indirizzamento (ASID) cosí che possano esservi cachate traduzioni per piú processi.

Protezione e condivisione

Nella tabella delle pagine ogni riga mantiene dei bit di protezione, che indicano se la pagina é in sola lettura, scrittura o esecuzione. Viene anche mantenuto un bit di validitá/invaliditá per marcare le pagine caricate e rilevare accessi illegali. I tentativi di accesso illegali generano una trap hardware che sará gestita dal SO.

Alcuni sistemi memorizzano anche la lunghezza della tabella della pagina di un processo poiché raramente questi usano tutto lo spazio di indirizzamento.