La memoria virtuale, una tecnica di gestione della memoria, permette a un sistema operativo (OS) sovraccarico di creare una forma sintetica di memoria che gli consente di operare oltre i limiti di memoria.
In sostanza, quando troppi programmi informatici esauriscono la memoria, la memoria virtuale consente al sistema operativo di riutilizzare la memoria ad accesso casuale (RAM) per l'uso su disco rigido.
Una rapida analogia finanziaria descrive perfettamente la situazione: pensa alla memoria fisica del tuo computer come al denaro nel tuo conto corrente personale. Tutto va bene e tutto funziona alla perfezione finché non esaurisci i fondi. Una volta raggiunto il punto più basso, la tua banca (che offre la protezione dal scoperto sui conti correnti) emette un fido (memoria virtuale) che copre temporaneamente le spese del conto.
Un fido sul conto corrente presenta dei limiti evidenti. Innanzitutto, un tetto finanziario controlla l'entità delle spese che la banca sosterrà. Inoltre, un limite di tempo stabilisce per quanto tempo il tuo istituto finanziario permetterà che la situazione continui senza un afflusso di capitale di emergenza sul tuo conto.
La memoria virtuale è un componente essenziale dei sistemi informatici e consente un funzionamento generale più fluido, ma è fondamentale sottolineare che non è una soluzione permanente e sostenibile. È concepita per fornire una quantità di memoria di emergenza. È una correzione che in qualche modo risolve il problema, ma solo temporaneamente.
La memoria virtuale è una creazione moderna dell'informatica. Fondamentalmente, aggiorna l'antico concetto di "prendere in prestito da Peter per pagare Paul", in cui le risorse vengono spostate da una fonte all'altra.
Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e oltre con la newsletter Think. Leggi l' Informativa sulla privacy IBM.
Un unità di elaborazione centrale (CPU) è il componente funzionale principale di un computer e utilizza diverse forme di memoria. La RAM è una forma di utilizzo della memoria più veloce e accessibile, ma di dimensioni non illimitate. Il disco rigido della CPU, invece, offre molto spazio di storage, ma con tempi di accesso più lenti.
La memoria reale è installata sulla CPU. La memoria reale si riferisce all'hardware della RAM in cui i dati vengono temporaneamente conservati per un uso immediato e attivo. (I programmatori si riferiscono alla memoria reale anche come memoria fisica o memoria principale.) Al contrario, la memoria secondaria è considerata non volatile, il che significa che tali dispositivi di archiviazione mantengono le capacità di memorizzazione anche quando la macchina è spenta e scollegata dalla fonte di alimentazione. Questo differisce dalla RAM, così come molte altre variabili di prestazioni.
Se i due tipi fossero interpretati come automobili, la RAM sarebbe come una piccola auto sportiva appariscente: veloce, costosa e con spazio a malapena sufficiente per un conducente e un passeggero (capacità ridotta). La memoria secondaria è più lenta ed economica, come un minivan economico, con una capacità notevolmente maggiore rispetto a quella offerta dalla memoria primaria.
L'hard disk, chiamato anche hard disk drive (HDD), funziona come unità di archiviazione e lettore combinati, mentre il disco rigido stesso è il piatto fisico all'interno dell'HDD e dove vengono codificati i dati magnetici.
Nella maggior parte dei casi, l'uso degli HDD è stato sostituito dal solid-state drive (SSD). L'SSD svolge le stesse funzioni ma utilizza memoria flash sotto forma di chip di memoria non volatili che non richiedono l'uso di parti mobili. Le unità SSD si confrontano favorevolmente con gli HDD grazie alla loro elevata velocità, al profilo fisico più sottile e al ridotto consumo energetico.
La memoria virtuale funziona convertendo temporaneamente la RAM che era stata utilizzata in precedenza, ma da allora è rimasta inattiva e inutilizzata per qualche tempo. Il sistema operativo estrae i dati da quella RAM appena usata e li inserisce in un file swap (o file di pagina) sul disco rigido.
Il sistema operativo quindi mette in servizio immediatamente la RAM appena pulita. La memoria aggiuntiva "presa in prestito" da quella RAM aiuta a eseguire i molteplici programmi dell'utente del computer senza problemi di prestazioni del sistema o rallentamenti percepiti nella velocità operativa.
Per quanto riguarda i dati, le pagine fungono da moneta di scambio e rappresentano il mezzo di scambio fondamentale. In termini di gestione della memoria virtuale, i moduli che arruola sono pagine, la più piccola unità di dati. Le pagine sono blocchi contigui (adiacenti) di spazio di indirizzi virtuali.
Le pagine hanno generalmente un formato fisso. In origine, pesavano uniformemente 4 KB e questa dimensione è stata tradizionalmente lo standard di settore. Ultimamente, i sistemi più moderni utilizzano dimensioni fisse molto maggiori, comprese dimensioni fino a 2 MB o 1 GB o anche superiori.
Nella memoria virtuale, la maggior parte delle pagine è di 4 KB o 8 KB, a seconda dell'architettura seguita. Microsoft Windows, Linux e macOS di Apple sono tutti basati su una dimensione di pagina di 4 KB. La dimensione della pagina della memoria virtuale UNIX è strutturata in base all'architettura hardware specifica di ciascun sistema, sia a 32 bit che a 64 bit. (I sistemi UNIX solitamente dedicano da 3 GB a 4 GB a ciascun processo eseguito.)
All'interno di un determinato sistema operativo, tutte le pagine di solito si conformano a una dimensione di pagina. L'eccezione a questa regola riguarda il partizionamento dinamico, che utilizza memoria di varie dimensioni, in base a una particolare richiesta. Avere pagine di dimensioni identiche rende più facile per un sistema operativo gestirle tutte insieme con successo.
Inoltre, grazie alle loro dimensioni corrispondenti, è più facile per il sistema operativo prevenire la frammentazione esterna, che si verifica quando sacche di memoria inutilizzata si radicano tra i blocchi di memoria allocati. Il risultato: troppo poca memoria disponibile da allocare in un unico blocco utile.
Utilizzando le pagine, un sistema operativo può mappare la memoria logica di un processo, traducendola essenzialmente in memoria fisica non contigua sotto forma di frame di pagina. I frame di pagina sono blocchi di memoria fisica (RAM) che un sistema operativo utilizza come tipo di contenitore per le pagine di memoria. La dimensione del frame della pagina corrisponde a quella della pagina stessa, che si tratti di 4 KB o di una dimensione maggiore.
Una CPU crea indirizzi di memoria virtuale, che fungono da riferimento alla posizione di memoria che verrà utilizzato dai processi software in esecuzione su quel sistema operativo. I programmatori utilizzano le tabelle di pagina per tracciare e gestire i frame di pagina e per fungere da struttura dati primaria. Una voce di tabella di pagine viene utilizzata per collegare un indirizzo virtuale a un indirizzo fisico all'interno del sistema operativo.
Un numero di pagina virtuale (VPN) utilizza i primi 20 bit di un indirizzo virtuale come identificatore per lo spazio di indirizzi virtuale all'interno dello spazio di memoria virtuale di quel processo computerizzato. Il numero di pagina identifica la pagina in modo che l'unità di gestione della memoria (MMU) possa recuperarla da un frame di memoria fisica o dal disco.
Nel frattempo, la parte restante dell'indirizzo funge da offset di pagina, che specifica la posizione fisica esatta di quella pagina all'interno del sistema operativo, fino alla posizione dei singoli byte.
In un mondo perfetto, la RAM di un computer si rivelerebbe sufficiente per eseguire i programmi. Tuttavia, l'informatica moderna si presta in modo eccellente al multitasking e all'esecuzione simultanea di più programmi, il che può facilmente confondere il processo di allocazione della memoria. Questa domanda aumentata impone regolarmente richieste eccessive sulla memoria disponibile del sistema operativo.
Quando lo spazio disponibile su disco è completamente esaurito, la memoria virtuale interviene per mantenere i tuoi programmi in funzione. Tuttavia, questa estensione operativa di solito comporta un costo significativo: la velocità di esercizio. La memoria virtuale funziona a un ritmo più lento rispetto alla RAM fisica (perché i dischi di memoria impiegano più tempo per essere accessibili). Quindi, più memoria virtuale un sistema operativo scarica, più è probabile che un operatore subisca un calo delle prestazioni.
Questa forma di rallentamento delle prestazioni è chiamata "thrashing". Il termine thrashing viene anche usato per indicare uno stato operativo prolungato e disfunzionale in cui un sistema dedica la maggior parte della sua capacità di elaborazione a mescolare dati dentro e fuori dalla memoria invece di eseguire codice.
Un altro tipo di fenomeno che si verifica regolarmente è noto come "errore di pagina". Gli errori di pagina si verificano quando un programma in esecuzione tenta di accedere a una pagina di dati che in quel momento non è mappata nella sua memoria RAM fisica.
Questo provoca un'interruzione hardware, mentre il gestore di errori di pagina nel kernel del sistema operativo viene attivato. Il kernel del sistema operativo accede ai dati necessari da una fonte di storage secondaria. Successivamente, il sistema operativo aggiorna la tabella di pagine che traccia tutti gli indirizzi virtuali e i relativi indirizzi fisici prima di tornare al normale funzionamento del programma.
Esistono diverse forme di errori di pagina, ciascuna classificata in base alla sua gravità percepita:
Un modo in cui un sistema operativo semplifica l'elaborazione è tramite il demand paging. Questa tecnica evita di preinstallare un intero programma in anticipo e invece il sistema operativo carica solo le pagine necessarie in un dato momento.
Il lato positivo è che il sistema può eseguire più programmi in questo modo. Lo svantaggio può significare un'alta incidenza di errori di pagina (che possono portare a thrashing) causati dall'interruzione costante delle operazioni per recuperare le pagine dal storage.
Varie metodologie basate su algoritmi vengono utilizzate in combinazione con il demand paging. Ognuno di questi algoritmi di sostituzione delle pagine affronta il problema con uno spin distinto:
Sbloccare operazioni più resilienti e veloci unificando storage, protezione e workload di orchestrazione per AI, VM e container.
Ottimizza e scala il workload tra ambienti virtuali e fisici con una virtualizzazione efficiente e flessibile.
Competenze tecniche complete per i tuoi server e storage IBM® Systems.