Definizione di memoria virtuale: cos'รจ la memoria virtuale?

29 Marzo 2024

La memoria virtuale รจ una tecnica del sistema informatico che fornisce un file applicazione l'impressione che abbia una memoria di lavoro (o spazio di indirizzi) contigua anche se puรฒ essere frammentata e persino estendersi nello spazio di archiviazione su un disco. In sostanza, consente di utilizzare in modo efficace una quantitร  di memoria maggiore di quella che potrebbe essere fisicamente disponibile sul sistema.

Come funziona la memoria virtuale?

La memoria virtuale comprende diverse funzionalitร  che arricchiscono lo spazio di archiviazione. Ecco come funziona:

  1. File di paging o spazio di scambio. La memoria virtuale utilizza una parte del disco rigido del computer (o SSD) per estenderlo RAM. Questo spazio sul disco viene spesso definito file di paging in Windows o spazio di scambio UNIX/sistemi Linux.
  2. Cercapersone e scambio. I sistema operativo sposta i dati tra il disco e la RAM in unitร  chiamate "pagine". Quando un programma deve accedere a dati che non sono attualmente nella RAM, il sistema sposterร  i dati che non sono stati utilizzati di recente sul disco (scambio o paging out) e caricherร  i dati necessari nella RAM (paging in).
  3. Unitร  di gestione della memoria (MMU). La MMU รจ un componente hardware responsabile della gestione della memoria virtuale. Traduce gli indirizzi virtuali in indirizzi fisici. Ogni programma ha il proprio spazio di indirizzi virtuali, che vengono mappati sugli indirizzi fisici dalla MMU.

Vantaggi e svantaggi dell'utilizzo della memoria virtuale

La memoria virtuale รจ una pietra angolare dell'informatica moderna, poichรฉ espande la capacitร  apparente della memoria fisica e facilita il multitasking senza interruzioni tra diverse applicazioni. Mentre offre flexbilitร , stabilitร  del sistema e maggiore sicurezza, puรฒ portare a colli di bottiglia nelle prestazioni, in particolare quando l'hardware del sistema non รจ ottimizzato per attivitร  di paging pesanti.

Di seguito รจ riportato uno schema dei vantaggi e degli svantaggi derivanti dallโ€™utilizzo di questa tecnologia.

Vantaggi

I vantaggi della memoria virtuale includono:

  • Efficienza nell'utilizzo della memoria. La memoria virtuale consente un utilizzo piรน efficiente della memoria fisica. Consente ai sistemi di eseguire applicazioni che richiedono piรน memoria di quella fisicamente disponibile utilizzando lo spazio su disco come estensione piรน lenta e funzionale della RAM.
  • Gestione della memoria semplificata. Per i programmatori, la memoria virtuale semplifica la gestione della memoria perchรฉ non devono gestire direttamente l'allocazione della memoria. Il sistema operativo gestisce la complessitร  della mappatura degli indirizzi virtuali in indirizzi fisici, consentendo agli sviluppatori di concentrarsi su altri aspetti delle loro applicazioni.
  • Sicurezza migliorata. Isolando lo spazio di memoria di ciascuna applicazione, la memoria virtuale aggiunge anche un livello di sicurezza. Impedisce a un'applicazione di accedere ai dati di un'altra, proteggendo cosรฌ da determinati tipi di bug del software o exploit dannosi.
  • Impegno eccessivo della memoria. I sistemi di memoria virtuale consentono l'allocazione di piรน memoria alle applicazioni di quella fisicamente presente utilizzando meccanismi come overcommitment e sovraallocazione della memoria. Questi approcci sono utili in ambienti in cui le applicazioni potrebbero riservare piรน memoria di quella effettivamente utilizzata.
  • Caricamento su richiesta/caricamento lento. La memoria virtuale carica solo le parti necessarie di un programma nella memoria fisica, riducendo i tempi di avvio e la quantitร  di memoria fisica utilizzata. Ciรฒ รจ particolarmente utile per le applicazioni con grandi quantitร  di codice o dati che non sono necessari contemporaneamente.
  • Creazione semplice del processo. L'uso della memoria virtuale rende piรน semplice per il sistema operativo allocare memoria ai processi appena creati. Puรฒ anche semplificare la gestione della memoria allocata dinamicamente all'interno di tali processi, migliorando la reattivitร  del sistema e scalabilitร .
  • File mappati in memoria. La memoria virtuale consente di mappare i file direttamente nello spazio degli indirizzi di un processo, semplificando l'accesso ai file e migliorando le prestazioni delle operazioni di I/O sui file.
  • Memoria virtuale condivisa. Negli ambienti in cui piรน processi devono accedere agli stessi dati, la memoria virtuale facilita la condivisione di questi dati mappandoli nello spazio degli indirizzi di ciascun processo. Questa funzionalitร  รจ utile nei sistemi multiutente o multiprocesso in cui i processi devono comunicare o condividere informazioni.

Svantaggi

Come ogni tecnologia, la memoria virtuale presenta una serie di svantaggi, tra cui:

  • Sovraccarico delle prestazioni. La memoria virtuale introduce un livello di conversione degli indirizzi tra la visione della memoria dell'applicazione e la memoria fisica effettiva, che puรฒ portare a un sovraccarico delle prestazioni. Il processo di scambio dei dati tra RAM e memoria su disco (paging) puรฒ rallentare il sistema, soprattutto se si accede frequentemente al disco a causa della RAM limitata.
  • Distruzione del disco. Ciรฒ si verifica quando il sistema ha poca memoria fisica e impiega molto tempo a scambiare pagine di memoria tra disco e RAM. Puรฒ ridurre gravemente le prestazioni del sistema, poichรฉ il tempo impiegato per leggere e scrivere sul disco รจ molto piรน lento rispetto all'accesso alla RAM.
  • Maggiore fabbisogno di spazio di archiviazione. La memoria virtuale richiede che una parte del disco venga allocata come spazio di swap (su Linux/Unix) o come file di paging (su Windows). Questa allocazione riduce lo spazio di archiviazione disponibile per altri usi e puรฒ essere significativa, soprattutto su sistemi con molta RAM.
  • Latenza nell'accesso alla memoria. I tempi di accesso per i dati archiviati nella memoria virtuale (ovvero sul disco) sono significativamente piรน elevati rispetto ai dati nella RAM fisica. Ciรฒ puรฒ portare a problemi di latenza per le applicazioni che richiedono accesso alla memoria ad alta velocitร , incidendo sulle prestazioni delle attivitร  urgenti.
  • Gestione complessa della memoria. La memoria virtuale richiede il mantenimento della tabella delle pagine, la gestione degli errori di pagina e la decisione di quali pagine scambiare dentro e fuori. Tutto ciรฒ aggiunge complessitร  alle attivitร  di gestione della memoria del sistema operativo e consuma risorse di sistema.
  • Frammentazione. Nel corso del tempo, il file di scambio o lo spazio di scambio puรฒ diventare frammentato, proprio come qualsiasi altro file system, che puรฒ ridurre le prestazioni poichรฉ il sistema deve cercare diverse parti del disco per leggere o scrivere una singola pagina di memoria.
  • Problemi di sicurezza. La memoria virtuale configurata in modo errato porta potenzialmente a vulnerabilitร  della sicurezza, come la perdita di informazioni riservate tra applicazioni o su disco. Garantire che la memoria scambiata sia gestita e ripulita correttamente รจ fondamentale.

Algoritmi utilizzati per la gestione della memoria virtuale

Alcuni Algoritmi sono impiegati per gestire la memoria virtuale, ciascuno con la sua strategia unica per ottimizzare l'uso delle risorse di memoria fisica. Tra questi, First-In, First-Out (FIFO) e Least Recently Used (LRU) si distinguono per i loro approcci distinti alla sostituzione delle pagine, che รจ un aspetto critico della gestione della memoria virtuale.

FIFO

First-In, First-Out (FIFO) รจ un algoritmo fondamentale di sostituzione delle pagine in cui le pagine vengono scambiate dentro e fuori dalla memoria fisica in base al loro tempo di arrivo. In FIFO, la pagina piรน vecchia, ovvero quella caricata per prima in memoria, รจ la prima ad essere eliminata quando รจ necessario spazio per nuove pagine. Questo metodo funziona in modo molto simile a una coda, dando prioritร  alle pagine nell'ordine in cui sono state introdotte.

Sebbene la semplicitร  e il sovraccarico minimo di FIFO lo rendano attraente, non tiene conto della frequenza o dell'attualitร  degli accessi alle pagine, il che puรฒ portare a un utilizzo della memoria non ottimale. Ciรฒ รจ evidente in situazioni come l'Anomalia di Belady, dove l'aggiunta di piรน frame di pagina potrebbe paradossalmente aumentare il numero di page fault, evidenziando un'inefficienza fondamentale nella strategia FIFO.

LRU

Least Recently Used (LRU), assegna la prioritร  alle pagine in base alla cronologia degli accessi, mirando specificamente alla pagina utilizzata meno di recente per la sostituzione. Questo metodo si basa sul presupposto che le pagine visitate di recente potrebbero essere nuovamente necessarie presto.

L'implementazione di LRU implica il monitoraggio dell'ora dell'ultimo accesso di ciascuna pagina o il mantenimento di un record delle pagine in ordine di accesso. Questa complessitร  aggiuntiva puรฒ essere giustificata dall'approssimazione piรน efficace di LRU della sostituzione ottimale della pagina, che mira a ridurre al minimo gli errori di pagina e migliorare le prestazioni mantenendo in memoria le pagine utilizzate di frequente. Nonostante il suo sovraccarico maggiore rispetto a FIFO, LRU รจ ampiamente considerata per la sua gestione piรน dinamica ed efficiente della memoria virtuale.

OPT

Sebbene non sia praticamente implementabile, la sostituzione ottimale della pagina (OPT) funge da punto di riferimento teorico per valutare l'efficienza degli algoritmi di sostituzione della pagina. OPT funziona secondo il principio di sfrattare la pagina che non sarร  piรน necessaria in futuro. Poichรฉ richiede previsione delle richieste future, OPT viene utilizzato in contesti accademici e teorici per valutare il limite superiore delle prestazioni dellโ€™algoritmo di sostituzione della pagina. La sua utilitร  sta nel confronto, poichรฉ aiuta gli sviluppatori a comprendere i potenziali miglioramenti in termini di efficienza degli algoritmi del mondo reale rispetto a questo standard idealizzato.


Anastasia
Spasojevic
Anastazija รจ una scrittrice di contenuti esperta con conoscenza e passione per cloud informatica, informatica e sicurezza online. A phoenixNAP, si concentra sulla risposta a domande scottanti su come garantire la robustezza e la sicurezza dei dati per tutti i partecipanti al panorama digitale.