La memoria virtuale è un’area dello spazio di memoria secondaria di un sistema informatico (come un disco rigido o un’unità a stato solido) che agisce come se fosse una parte della RAM o della memoria primaria del sistema.

Idealmente, i dati necessari per eseguire le applicazioni sono memorizzati nella RAM, dove è possibile accedervi rapidamente dalla CPU. Ma quando vengono eseguite applicazioni di grandi dimensioni o quando molte applicazioni sono in esecuzione contemporaneamente, la RAM del sistema potrebbe riempirsi.

Per ovviare a questo problema, alcuni dati memorizzati nella RAM che non viene utilizzata attivamente possono essere temporaneamente spostati nella memoria virtuale (che si trova fisicamente su un disco rigido o altro dispositivo di archiviazione). Questo libera spazio nella RAM, che può quindi essere utilizzato per ospitare i dati che il sistema deve accedere imminentemente.

Scambiando i dati tra RAM e memoria virtuale quando non è necessario e tornando dalla memoria virtuale alla RAM quando è necessario, un sistema può continuare a funzionare senza problemi con molta meno RAM fisica di quanto altrimenti richiederebbe.

La memoria virtuale consente a un sistema di eseguire applicazioni più grandi o eseguire più applicazioni contemporaneamente senza esaurire la RAM. In particolare, il sistema può funzionare come se le sue risorse RAM totali fossero uguali alla quantità di RAM fisica, più la quantità di RAM virtuale.

Perché c’è bisogno di memoria virtuale?

La memoria virtuale è stata sviluppata quando la RAM fisica era molto costosa e la RAM è ancora più costosa per Gigabyte rispetto ai supporti di memorizzazione come dischi rigidi e unità a stato solido. Per questo motivo è molto meno costoso utilizzare una combinazione di RAM fisica e memoria virtuale che dotare un sistema informatico di più RAM.

Poiché l’utilizzo della memoria virtuale (o l’aumento della memoria virtuale) non ha costi finanziari aggiuntivi (perché utilizza lo spazio di archiviazione esistente), offre un modo per un computer di utilizzare più memoria di quella fisicamente disponibile sul sistema.

Un altro driver chiave per l’uso della memoria virtuale è che tutti i sistemi informatici hanno un limite (dettato da hardware e software) sulla quantità di RAM fisica che può essere installata. L’utilizzo della memoria virtuale consente al sistema di continuare a funzionare oltre i limiti fisici della RAM.

Memoria virtuale vs memoria fisica

Poiché la RAM è più costosa della memoria virtuale, sembrerebbe – a parità di condizioni – che i computer dovrebbero essere dotati di meno RAM e più memoria virtuale possibile.

Ma in realtà le caratteristiche della memoria virtuale sono diverse da quelle della memoria fisica. La differenza fondamentale tra memoria virtuale e memoria fisica è che la RAM è molto più veloce della memoria virtuale.

Quindi un sistema con 2 GB di RAM fisica e 2 GB di memoria virtuale non offrirà le stesse prestazioni di un sistema simile con 4 GB di RAM fisica. Per capire perché, è necessario capire come funziona la memoria virtuale.

Come funziona la memoria virtuale?

Quando un’applicazione (incluso il sistema operativo) è in esecuzione, memorizza la posizione dei thread del programma e altri dati in un indirizzo virtuale, mentre i dati sono effettivamente memorizzati in un indirizzo fisico nella RAM. Se in seguito lo spazio RAM è necessario più urgentemente da un altro processo, i dati possono essere scambiati dalla RAM e nella memoria virtuale.

La responsabilità di tenere traccia di tutti questi dati mentre vengono scambiati tra memoria fisica e virtuale ricade sul gestore della memoria del computer. Il gestore di memoria gestisce una tabella che associa gli indirizzi virtuali utilizzati dal sistema operativo e dalle applicazioni agli indirizzi fisici in cui i dati sono effettivamente memorizzati. Quando i dati vengono scambiati tra RAM e memoria virtuale, la tabella viene aggiornata in modo che un determinato indirizzo virtuale punti sempre alla posizione fisica corretta.

Un computer può eseguire solo thread e manipolare i dati memorizzati nella RAM anziché nella memoria virtuale. E ci vuole una quantità non trascurabile di tempo per scambiare i dati necessari nella RAM. Di conseguenza, ne consegue che l’utilizzo della memoria virtuale comporta un impatto sulle prestazioni.

In altre parole, un sistema con 4 GB di RAM offre generalmente prestazioni più elevate rispetto a un sistema con 2 GB di RAM e 2 GB di memoria virtuale a causa del colpo di prestazioni causato dallo scambio, e per questo motivo si dice che la memoria virtuale sia più lenta della RAM.

Un potenziale problema con la memoria virtuale è che se la quantità di RAM presente è troppo piccola rispetto alla quantità di memoria virtuale, un sistema può finire per spendere una gran parte delle sue risorse della CPU scambiando i dati avanti e indietro. Nel frattempo, le prestazioni di lavoro utile macina ad un quasi arresto-un processo noto come thrashing.

Per evitare il thrashing è solitamente necessario ridurre il numero di applicazioni eseguite contemporaneamente o semplicemente aumentare la quantità di RAM nel sistema.

I sistemi operativi, come la maggior parte delle versioni di Windows, generalmente raccomandano agli utenti di non aumentare la memoria virtuale oltre 1,5 volte la quantità di RAM fisica presente. Quindi un sistema con 4 GB RAM dovrebbe avere una memoria virtuale non superiore a 6 GB.

Per ridurre al minimo il successo delle prestazioni causato dallo scambio tra memoria fisica e virtuale, è meglio utilizzare il dispositivo di archiviazione più veloce collegato al sistema per ospitare la memoria virtuale e per individuare l’area di archiviazione della memoria virtuale sulla propria partizione.

 memoria virtuale

memoria virtuale

La memoria virtuale può agire di concerto con la memoria principale di un computer per consentire operazioni più veloci e fluide.

Come aumentare la memoria virtuale in un sistema

La maggior parte dei sistemi operativi consente agli utenti di aumentare la memoria virtuale da una pagina di configurazione.

  • In Windows, gli utenti possono anche consentire al sistema di gestire dinamicamente la quantità di memoria virtuale fornita.
  • Allo stesso modo, in Mac OS, gli utenti possono utilizzare il pannello Preferenze per assegnare la memoria virtuale.

Tipi di memoria virtuale: Paging e segmentazione

La memoria virtuale può essere gestita in diversi modi dal sistema operativo di un sistema e i due approcci più comuni sono paging e segmentazione.

Paging della memoria virtuale

In un sistema che utilizza il paging, la RAM è divisa in un numero di blocchi, solitamente di dimensioni 4k, chiamati pagine. I processi vengono quindi allocati solo pagine sufficienti per soddisfare i loro requisiti di memoria. Ciò significa che ci sarà sempre una piccola quantità di memoria sprecata, tranne nel caso insolito in cui un processo richiede esattamente un numero intero di pagine.

Durante il normale corso delle operazioni, le pagine (cioè i blocchi di memoria di dimensioni 4K) vengono scambiati tra RAM e un file di paging, che rappresenta la memoria virtuale.

Segmentazione della memoria virtuale

La segmentazione è un approccio alternativo alla gestione della memoria, in cui invece di pagine di dimensioni fisse, ai processi vengono assegnati segmenti di lunghezza diversa per soddisfare esattamente i loro requisiti. Ciò significa che, a differenza di un sistema di paging, nessuna memoria viene sprecata in un segmento.

La segmentazione consente inoltre di suddividere le applicazioni in spazi di indirizzo logicamente indipendenti, che possono renderle più facili da condividere e più sicure.

Ma un problema con la segmentazione è che poiché ogni segmento ha una lunghezza diversa, può portare alla frammentazione della memoria.”Ciò significa che quando i segmenti vengono allocati e de-allocati, piccoli blocchi di memoria possono essere lasciati sparsi in giro che sono troppo piccoli per essere utili.

Man mano che questi piccoli blocchi si accumulano, è possibile allocare sempre meno segmenti di dimensioni utili. E se il sistema operativo inizia a utilizzare questi piccoli segmenti, ci sono un numero enorme da tenere traccia e ogni processo dovrà utilizzare molti segmenti diversi, il che è inefficiente e può ridurre le prestazioni.

Vantaggi e svantaggi della memoria virtuale

Anche se la RAM è ora relativamente economica rispetto al suo costo quando la memoria virtuale è stata sviluppata per la prima volta, è ancora estremamente utile ed è ancora impiegata in molti, forse la maggior parte, sistemi informatici. Il problema chiave con la memoria virtuale riguarda le prestazioni.

Vantaggi della memoria virtuale

  • Consente di eseguire più applicazioni contemporaneamente.
  • Consente alle applicazioni più grandi di essere eseguite in sistemi che non dispongono di RAM fisica sufficiente per eseguirli.
  • Fornisce un modo per aumentare la memoria che è meno costoso rispetto all’acquisto di più RAM.
  • Fornisce un modo per aumentare la memoria in un sistema che ha la quantità massima di RAM che il suo hardware e sistema operativo in grado di supportare.

Svantaggi della memoria virtuale

  • Non offre le stesse prestazioni della RAM.
  • Può influire negativamente sulle prestazioni complessive di un sistema.
  • Occupa spazio di archiviazione che potrebbe altrimenti essere utilizzato per l’archiviazione dei dati a lungo termine.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.