Un modulo specializzato del sistema operativo, il memory manager o gestore della memoria, gestisce assegnazioni e rilasci della memoria ai processi.
Per il caricamento statico assegnazioni e rilasci avvengono solo alla generazione e terminazione dei processi. La dimensione della memoria limita sia il numero di processi che possono coesistere sia la velocità di avanzamento.
Il gestore della memoria deve gestire la memoria in modo da:
- non limitare la possibilità di creare altri processi,
- consentire l’avanzamento di tutti processi,
- ridurre il numero e la durata delle sospensioni per aspettare il caricamento di codice e dati per poter avanzare.
L’assegnazione della memoria può impiegare strategie diverse più o meno efficienti e più o meno semplici da implementare.
Il gestore della memoria occupa tempo di processore e causa overhead.
In ogni caso il gestore della memoria deve tener conto di quali sono le locazioni libere o occupate, stabilire quali locazioni assegnare a ciascun programma, memorizzare il programma nell’area assegnatali e recuperare le locazioni che si rendono di nuovo libere alla fine del processo. Tutto ciò deve avvenire in modo trasparente all’utente.
La coesistenza di aree di memoria assegnate a processi diversi impone meccanismi di protezione. La protezione della memoria deve garantire la separazione degli spazi di indirizzi dei processi, cioè deve controllare che ogni processo possa accedere soltanto all’area di memoria assegnatali, senza invadere aree riservate ad altri processi o al sistema operativo. In ogni caso al sistema operativo deve essere concesso accedere a qualsiasi zona della memoria.
Deve comunque essere permesso condividere delle aree di codice o dati.