L’hardware del computer responsabile della gestione del sistema di memoria del computer è chiamato unità di gestione della memoria (MMU). Questo componente funge da buffer tra la CPU e la memoria di sistema. Le funzioni svolte dall’unità di gestione della memoria possono essere tipicamente suddivise in tre aree: gestione della memoria hardware, gestione della memoria del sistema operativo e gestione della memoria dell’applicazione. Sebbene l’unità di gestione della memoria possa essere un componente chip separato, di solito è integrata nell’unità di elaborazione centrale (CPU).
In genere, l’hardware associato alla gestione della memoria include la memoria ad accesso casuale (RAM) e le cache di memoria. La RAM è lo scomparto di archiviazione fisico che si trova sul disco rigido. È l’area di archiviazione principale del computer in cui i dati vengono letti e scritti. Le cache di memoria vengono utilizzate per contenere copie di determinati dati dalla memoria principale. La CPU accede a queste informazioni conservate nella cache di memoria, il che aiuta ad accelerare il tempo di elaborazione.
Quando la memoria fisica, o RAM, esaurisce lo spazio di memoria, il computer utilizza automaticamente la memoria virtuale dal disco rigido per eseguire il programma richiesto. L’unità di gestione della memoria alloca la memoria dal sistema operativo a varie applicazioni. L’area degli indirizzi virtuali, che si trova all’interno dell’unità di elaborazione centrale, è composta da un intervallo di indirizzi suddivisi in pagine. Le pagine sono blocchi di archiviazione secondari di dimensioni uguali. Il processo di paging automatizzato consente al sistema operativo di utilizzare lo spazio di archiviazione sparso sul disco rigido.
Invece che l’utente riceva un messaggio di errore che non c’è abbastanza memoria, la MMU indica automaticamente al sistema di creare abbastanza memoria virtuale per eseguire l’applicazione. Lo spazio di memoria virtuale contiguo viene creato da un pool di blocchi di memoria virtuale di dimensioni uguali per l’esecuzione dell’applicazione. Questa funzionalità è una chiave importante per far funzionare questo processo in modo efficace ed efficiente perché il sistema non è tenuto a creare un blocco di memoria virtuale per gestire i requisiti del programma. La creazione di varie dimensioni di spazio di memoria per ospitare programmi di dimensioni diverse causa un problema noto come frammentazione. Questo potrebbe portare alla possibilità di non avere abbastanza spazio libero per programmi più grandi quando lo spazio totale disponibile è effettivamente sufficiente.
La gestione della memoria dell’applicazione comporta il processo di allocazione della memoria necessaria per eseguire un programma dalle risorse di memoria disponibili. Nei sistemi operativi più grandi, possono essere in esecuzione molte copie della stessa applicazione. L’unità di gestione della memoria spesso assegna a un’applicazione l’indirizzo di memoria che meglio si adatta alle sue esigenze. È più semplice assegnare a questi programmi gli stessi indirizzi. Inoltre, l’unità di gestione della memoria può distribuire le risorse di memoria ai programmi in base alle necessità. Al termine dell’operazione, la memoria viene riciclata per essere utilizzata altrove.
Una delle sfide principali per l’unità di gestione della memoria è rilevare quando i dati non sono più necessari e possono essere eliminati. Ciò libera memoria per l’utilizzo su altri processi. La gestione della memoria automatica e manuale è diventata un campo di studio separato a causa di questo problema. La gestione inefficiente della memoria rappresenta un grosso problema quando si tratta di prestazioni ottimali dei sistemi informatici.