Definizione

La paginazione é una tecnica di gestione della memoria centrale che permette la multiprogrammazione, utilizzando aree di memoria non contigue per lo stesso processo in modo trasparente al programmatore, separando la visione dello spazio di indirizzamento logico dei processi, da quello fisico.

Permette inoltre di eseguire un processo senza doverlo tenere interamente in memoria, scambiando le sue pagine all’occorrenza tra memoria centrale e area di swap.

Memoria Fisica e Logica

Memoria Fisica

La memoria fisica é divisa in frame di dimensione fissa, tipicamente multiplo di 2.

Memoria Logica

La memoria logica é divisa in pagine della stessa dimensione dei frame in cui sono inseriti.

Indirizzi Logici e Fisici

Gli indirizzi logici sono generati dalla CPU e sono composti da un numero di pagina e un offset:

Il SO mantiene inoltre una tabella dei frame, per sapere quali frame sono liberi e decidere dove allocare la pagina.

Frammentazione

Con la paginazione non si ottiene frammentazione esterna, dato che i frame hanno tutti la stessa dimensione, ma bensí si ottiene frammentazione interna, poiché i programmi non essendo mai grandi esattamente quanto la pagina, lasceranno sempre spazio vuoto nell’ultimo frame.

MMU (Memory Managment Unit)

Le traduzioni degli indirizzi, da fisici a logici e viceversa, sono svolte dalla MMU, memory managment unit, siccome ogni accesso in memoria ne richiederebbe una ulteriore per recuperare la traduzione, viene implementata una cache associativa, veloce, compatta ma costosa la TLB, per tenere rapido l’accesso alle traduzioni recenti.

TLB (Translation Lookaside Buffer)

Memoria associativa che viene implementata per tenere rapido l’accesso alle traduzioni piú recenti.