Il microprocessore richiede continui accessi alla memoria. Le richieste di accesso sono gestite dalla MMU (Memory management unit, unità di gestione della memoria): un dispositivo allocato sul chip della CPU. In alcuni sistemi, l’unità di gestione della memoria risiede su un chip separato dalla CPU, ma collegato a quest’ultima tramite un bus (canale attraverso cui i dispositivi elettronici di un calcolatore comunicano fra loro).
È indispensabile, per analizzare il funzionamento di questa unità, conoscere il concetto di memoria virtuale.
Solitamente i programmi eseguiti da un calcolatore occupano una dimensione, in termini di spazio di memoria, più grande rispetto a quella fisicamente disponibile in memoria centrale. Nonostante ciò, un programma da eseguire deve essere necessariamente caricato in memoria centrale.
Come è possibile eseguire un programma che abbia una dimensione maggiore rispetto alla memoria centrale?
In passato la soluzione prevista era quella di ridurre semplicemente la dimensione, in termini di memoria, di un software: se necessario, venivano scelti algoritmi che prevedevano elaborazioni più lente a vantaggio di minori risorse.
Una successiva soluzione, più efficiente, consisteva nel dividere il programma in un definito numero di pezzi, detti overlay (ricoprimento). Ogni pezzo di programma aveva una dimensione tale da poter essere immagazzinato in memoria centrale. Quando iniziava l’esecuzione del programma, veniva prelevato il primo overlay e memorizzato nella memoria principale. Quando la prima parte di programma era stata eseguita, veniva scaricata e sostituita con un altro overlay. Il procedimento continuava fino al termine del programma.
Una nuova tecnica nasce nel 1961 da un progetto sperimentale di un gruppo di ricercatori di Manchester (Inghilterra): tecnica oggi nota con il termine di memoria virtuale.
La memoria virtuale è un metodo con il quale si simula uno spazio di memoria centrale maggiore di quello fisicamente disponibile. Questo tipo di architettura utilizza, oltre alla memoria centrale, uno spazio di memoria secondaria: solitamente le unità a disco (hard disk). In ambiente Windows (sistema operativo di casa Microsoft) la memoria secondaria, utilizzata per implementare la tecnica della memoria virtuale, è chiamata con il termine di file di paging.
La memoria virtuale consiste in una tecnica che realizza un overlay automatico, meglio noto con il termine di paginazione; mentre le parti di un programma sono denominate pagine.
Vengono separati i concetti di spazio degli indirizzi da quelli di locazioni di memoria. Tutti gli indirizzi utilizzabili da un programma, in fase di esecuzione, sono definiti spazio degli indirizzi virtuali; gli indirizzi fisicamente presenti in memoria centrale si definiscono spazio degli indirizzi fisici. L’indirizzo fisico corrispondente a ogni indirizzo virtuale è specificato in una mappa di memoria (o tabella delle pagine).
Questa tecnica di gestione della memoria permette l’esecuzione di programmi di qualsiasi dimensione. I programmi possono memorizzare i dati nello spazio degli indirizzi virtuali, senza considerare la reale quantità di indirizzi fisici effettivamente presenti in memoria centrale.
In un calcolatore, che implementa la memoria virtuale, gli indirizzi virtuali vengono tradotti in indirizzi fisici reali dalla MMU. Inoltre, l’unità di gestione della memoria svolge ulteriori compiti: come quello di controllare se l’indirizzo fisico corrisponda ad una zona fisicamente presente nella memoria centrale; la protezione della memoria; il controllo della cache della CPU e l’arbitraggio del bus. Quest’ultimo consiste in una tecnica di gestione del possesso del bus: infatti, può accadere che nello stesso momento la CPU, la memoria o altri dispositivi ne richiedono l’utilizzo.
Un ulteriore compito della MMU è quello di proteggere la memoria da processi erronei. Ad esempio, può verificarsi il caso in cui la condizione di pagina di memoria mancante può segnalare un errore nel software. Segnalato l’errore al sistema operativo, quest’ultimo provvede ad ostacolare ad un processo l’accesso a locazioni di memoria non autorizzate.
Sommario, Bibliografia e Sitografia
Vincenzo Barile
segue…