Come funziona la Memoria Virtuale?
La memoria virtuale è una porzione del disco fisso, che viene utilizzata come estensione della RAM durante l’elaborazione dei processi. Essa permette di eseguire operazioni generalmente non eseguibili all’interno della sola RAM (che ha spazio limitato), perché troppo estese.
Si tratta di un espediente molto utile, adoperato per l’esecuzione con i calcolatori di programmi ben più grandi rispetto alla RAM disponibile. Questo risultato si ottiene con la simulazione di uno spazio virtualmente infinito su HDD (anche se la memoria virtuale è comunque limitata a un determinato valore).
Differenza fra RAM e disco fisso
Per poter comprendere meglio come funziona la memoria virtuale, è assolutamente necessario fare un breve approfondimento sui due elementi principali, che costituiscono la memoria di un personal computer.
L’hard disk (anche conosciuto come disco rigido, disco fisso o HDD) rappresenta la parte fisica della memoria. La sua funzionalità all’interno di un computer è quella di immagazzinare i dati e conservarli.
Esistono varianti più moderne e veloci nel trasferimento e nella scrittura di dati denominati SSD (Solid State Drive) che, pur differendo nel metodo di immagazzinamento dei dati stessi, svolgono praticamente lo stesso compito.
La RAM (Random Access Memory) ha anch’essa il compito di immagazzinare dati, ma per un periodo limitato. Il suo scopo principale, infatti, non è la conservazione dei suddetti, quanto piuttosto la possibilità di renderli disponibili il più velocemente possibile, per assicurare il corretto funzionamento dei processi in atto.
Il caricamento dei dati è quindi più veloce rispetto a quando si utilizza un hard disk, ma il problema è che, trattandosi di memoria di tipo volatile, allo spegnimento del PC tutti i valori presenti nella RAM vengono cancellati.
Il funzionamento della memoria virtuale nel dettaglio
Ora che tutti gli elementi principali della memoria sono stati descritti, è il momento di capire come funziona nel dettaglio la memoria virtuale. Quando un processo è corposo e non trova spazio all’interno della RAM, il sistema operativo provvede a caricarne una parte in una sezione speciale del disco fisso, che simula di fatto un’estensione della RAM stessa.
Essa ne conserva la velocità nei caricamenti e permette il facile accesso a tutti i dati relativi a quel processo durante la sua esecuzione. Per dirla in maniera più corretta, si impiega il disco fisso (memoria secondaria) come uno storage provvisorio per i dati/processi non immediatamente necessari al calcolo in svolgimento.
È in questo frangente che entra in gioco lo swap. Il termine indica uno scambio di dati/pagine fra disco e RAM (swap-in) o fra RAM e disco (swap-out). Questa operazione consente di richiamare, quando servono, i pezzi del processo precedentemente immagazzinati nella memoria virtuale, sostituendoli alle parti già in esecuzione nella RAM.
Un esempio concreto di come swap e memoria virtuale interagiscono fra di loro è il seguente:
- si deve eseguire un processo;
- per farlo in maniera più veloce vengono caricate nella RAM solo le prime pagine;
- le rimanenti vengono assegnate alla memoria virtuale del disco rigido;
- con l’avanzare dei calcoli per il processo, le pagine necessarie sono richiamate dalla memoria virtuale e sostituite (swappate) con quelle presenti nella RAM che non servono più.
Per trovare la giusta pagina da caricare nella RAM in un dato momento, il calcolatore si affida al cosiddetto indirizzo virtuale. Si tratta di una stringa formata da tre elementi: numero segmento, numero pagina e offset. A questi valori si aggiungono poi quelli di segmentazione e paginazione, così da individuare con precisione l’elemento successivo che serve al processo.
