Supponiamo che quasi tutta la memoria centrale sia stata allocata.
Nel momento in cui viene lanciato un altro processo (che richiede
ulteriore memoria), il Gestore della Memoria sarebbe costretto a
rispondere che non ha più memoria centrale disponibile;
probabilmente, così, il processo sarebbe costretto a terminare la
propria esecuzione in modo erroneo. È però possibile ovviare a
questo problema grazie alla tecnica della paginazione, che sta alla
base della gestione della memoria virtuale.
Tale tecnica è possibile in quanto, in un certo istante, non tutti i
processi usano tutti i blocchi di memoria a loro assegnati; se si
potesse liberare la memoria centrale -spostando temporaneamente
sul disco fisso alcuni blocchi di memoria non utilizzati- i processi
che fanno richiesta di nuova memoria non verrebbero fermati.
Le pagine logiche, quando vengono assegnate dal Gestore della
Memoria al processo, corrispondono a pagine fisiche. Se la
richiesta di nuove pagine da parte di un processo non può ex
soddisfatta perchè tutta la memoria centrale è assegnata, il Gestore
della Memoria sceglie le pagine da spostare sul disco. Lo
spostamento viene fatto scrivendone il contenuto in un opportuno
file, detto FILE DI PAGING. Le pagine fisiche così liberate
vengono associate a nuove pagine logiche e utilizzate dal processo
che le ha richieste.
Il file di paging viene anche detto AREA DI SWAP per il seguente
motivo. Supponiamo che un processo voglia accedere a una
pagina logica assegnatagli, tramite l'indirizzo logico di un byte che
vi appartiene. La MMU accede alla tabella delle pagine e cerca di
ottenere il numero di pagina fisica corrispondente (utilizzato per
ottenere l'indirizzo fisico del Byte e quindi l'accesso al Byte
stesso). Se l'Unità di Gestione della Memoria non trova un numero
di pagina fisica associato a quello della pagina logica, significa
che la pagina è stata trasferita su disco, nel file di PAGING. Per
ricaricarla occorre farle posto, scaricandole un'altra nel file di
paging; questa attività prende il nome di SWAPPING (“scambio
reciproco”).
In casi di carico di lavoro non eccessivo la tecnica va a buon fine:
i processi riescono comunque a portare a termine il loro lavoro,
con minime penalizzazioni in termini di prestazioni (l'attività di
swapping è più lenta dell'accesso diretto alla memoria centrale).
In casi di carico di lavoro estremo (con richieste da una volta e
mezza della RAM disponibile in su), l'attività di SWAPPING
prende il sopravvento, rallentando in modo significativo il
sistema. Questo fenomeno viene detto TRASHING (“buttare nella
spazzatura”), in quanto il tempo di esecuzione della macchina
viene letteralmente buttato via nell'attività di swapping, senza che
i processi in realtà evolvano.
Nessun commento:
Posta un commento