Il Sistema Operativo

Gestione della Memoria: l'MMU

Un compito fondamentale, se non il più importante, di un SO è quello di gestire la Memoria, soprattutto quando il dispositivo è progettato allo scopo di prestazioni elevate in velocità e tempi di risposta, come ad esempio quelli degli smartphones. Comunemente utilizziamo il termine "Memoria" sia per descrivere la memoria fisica (disco rigido) sia per descrivere la memoria RAM (memoria centrale). Ma un sistema operativo ha la facoltà di gestire un'altro di tipo di memoria: la memoria virtuale. Possiamo classificare questa memoria come "modo attraverso cui il SO mappa i processi in memoria" per agevolare lo scheduling. Il come vengono mappati dipende dalla gestione del SO.
 
E' dunque attraverso queste due memorie che il SO deve mediare. Per poter essere eseguito un processo deve risiedere necessariamente in memoria centrale. Il sistema SO deve creare quindi una corrispondenza tra il processo virtuale (immagine del processo in memoria virtuale) e il processo vero e proprio (in memoria fisica, centrale o di massa). Attraverso un componente detto MMU - Memory Management Unit - il SO converte l'indirizzo logico della memoria virtuale in indirizzo fisico vero e proprio in  risiede il processo. 

Quando un processo deve essere eseguito, dopo essere stata creata un'immagine del processo nella memoria virtuale, nel caso non ci sia e viene interpellato il MMU per tradurre l'indirizzo logico tramite una tabella dei Processi, costantemente aggiornata sulle corrispondenze [indirizzo logico, indirizzo fisico]. Esso preleva l'indirizzo logico lo converte in indirizzo fisico, preleva il processo dalla memoria fisica o centrale. Una volta portato in memoria centrale il processo pu˜ essere eseguito.


Lo schema di funzionamento dei mostra come parte  dell'efficienza di un SO dipenda dal modo con cui gestisce la memoria, sia virtuale, sia centrale. Osservare pertanto le sole capacità della memoria RAM di un dispositivo, limitativo se non si valuta anche come il sistema operativo la gestisce. Esistono diverse tecniche a seconda della natura delle memorie che abbiamo citato, ed entrare nel dettaglio sarebbe dispersivo e oneroso. Ci limitiamo ad osservare solo che la gestione della memoria si basa su 4 parametri:

1. Rilocazione: la rilocazione indica la capacità di un processo di avere sempre lo stesso spazio in memoria virtuale (statica) oppure variabile ogni volta che viene creato (dinamica)
 
2. Disposizione della Memoria Virtuale: rappresenta il modo con il quale si "salvano" le immagini dei processi in MV (unico o segmentato).

3. Allocazione della Memoria Fisica: un processo allocato in memoria fisica pu˜ essere salvato in maniera contigua (per intero) oppure non contiguo (diviso in frammenti collegati).

4. Loading della Memoria Virtuale: definisco il modo di caricamento di un processo in MV.