Memoria virtuale nel sistema operativo: cos'è, demand paging, vantaggi
⚡ Riepilogo intelligente
La memoria virtuale è un meccanismo di archiviazione che offre all'utente l'illusione di una grande memoria principale, trattando parte della memoria secondaria come RAM. Consente l'esecuzione di processi di dimensioni superiori alla memoria fisica e viene implementata tramite paginazione a richiesta.

Cos'è la memoria virtuale?
Memoria virtuale La memoria virtuale è un meccanismo di archiviazione che offre all'utente l'illusione di disporre di una memoria principale molto ampia. Ciò avviene trattando una parte della memoria secondaria come se fosse la memoria principale. Nella memoria virtuale, l'utente può memorizzare processi di dimensioni maggiori rispetto alla memoria principale disponibile.
Pertanto, invece di caricare un lungo processo nella memoria principale, il sistema operativo carica le varie parti di più di un processo nella memoria principale. La memoria virtuale è per lo più implementata con il paging e la segmentazione della domanda.
Perché è necessaria la memoria virtuale?
Ecco i motivi per cui si utilizza la memoria virtuale:
- Quando il computer non ha spazio sufficiente nella memoria fisica, scrive le informazioni necessarie sul disco rigido in un file di swap, utilizzandolo come memoria virtuale.
- Se un computer è in esecuzione Windows Se necessita di più memoria/RAM di quella installata nel sistema, utilizza una piccola porzione del disco rigido a questo scopo.
Come funziona la memoria virtuale?
Nel mondo moderno, la memoria virtuale è diventata piuttosto comune. Viene utilizzata quando alcune pagine devono essere caricate nella memoria principale per l'esecuzione, ma la memoria disponibile non è sufficiente per caricarle tutte.
In tal caso, invece di impedire alle pagine di entrare nella memoria principale, il sistema operativo cerca lo spazio RAM utilizzato minimamente di recente, o che non è referenziato, e lo sposta nella memoria secondaria per fare spazio alle nuove pagine nella memoria principale.
Cerchiamo di capire gestione della memoria virtuale con l'aiuto di un esempio.
Per esempio
Supponiamo che un sistema operativo richieda 300 MB di memoria per memorizzare tutti i programmi in esecuzione. Tuttavia, al momento sono disponibili solo 50 MB di memoria fisica nella RAM.
- Il sistema operativo configurerà quindi 250 MB di memoria virtuale e utilizzerà un programma chiamato Virtual Memory Manager (VMM) per gestire tali 250 MB.
- In questo caso, quindi, il VMM creerà un file sul disco rigido di 250 MB per memorizzare la memoria aggiuntiva necessaria.
- Il sistema operativo procederà ora ad accedere alla memoria come se considerasse 300 MB di memoria reale memorizzati nella RAM, anche se sono disponibili solo 50 MB di spazio.
- Il compito del VMM è quello di gestire 300 MB di memoria anche se sono disponibili solo 50 MB di spazio di memoria reale.
Che cos'è il paging della domanda?
Un meccanismo di paging su richiesta è molto simile a a sistema di cercapersone con scambioping, dove i processi sono memorizzati nella memoria secondaria e le pagine vengono caricate solo su richiesta, non in anticipo.
Pertanto, quando si verifica un cambio di contesto, il sistema operativo non copia mai le pagine del vecchio programma dal disco né le pagine del nuovo programma nella memoria principale. Invece, dopo aver caricato la prima pagina, inizia l'esecuzione del nuovo programma e recupera le pagine del programma a cui si fa riferimento.
Durante l'esecuzione del programma, se quest'ultimo fa riferimento a una pagina che potrebbe non essere disponibile nella memoria principale perché è stata spostata in memoria di swap, il processore lo considera un riferimento di memoria non valido. Questo accade perché l'errore di pagina trasferisce il controllo dal programma al sistema operativo, che richiede di memorizzare nuovamente la pagina in memoria.
Tipi di metodi di sostituzione della pagina
Ecco alcuni importanti metodi di sostituzione delle pagine:
- FIFO
- Algoritmo ottimale
- Sostituzione della pagina LRU
Sostituzione della pagina FIFO
FIFO (First-in-first-out) è un metodo di implementazione semplice. In questo metodo, la memoria seleziona la pagina da sostituire che è rimasta nell'indirizzo virtuale della memoria per più tempo.
Caratteristiche
- Ogni volta che viene caricata una nuova pagina, quella che è rimasta in memoria più a lungo viene rimossa. Pertanto, è facile decidere quale pagina rimuovere, poiché il suo numero identificativo si trova sempre all'inizio dello stack FIFO.
- La pagina più vecchia nella memoria principale è quella che deve essere selezionata per prima per la sostituzione.
Algoritmo ottimale
Il metodo di sostituzione della pagina ottimale seleziona quella pagina per una sostituzione per la quale il tempo fino al riferimento successivo è più lungo.
Caratteristiche
- L'algoritmo ottimale produce il minor numero di errori di pagina. Questo algoritmo è difficile da implementare.
- Un algoritmo di sostituzione delle pagine ottimale presenta il tasso di errori di pagina più basso di tutti gli algoritmi. Questo algoritmo esiste e dovrebbe essere chiamato MIN o OPT.
- Sostituisci la pagina che difficilmente verrà utilizzata per un periodo prolungato. In questo modo la pagina viene utilizzata solo quando è effettivamente necessaria.
Sostituzione della pagina LRU
L'acronimo LRU sta per Least Recently Used (pagina meno utilizzata di recente). Questo metodo aiuta il sistema operativo a individuare l'utilizzo delle pagine in un breve periodo di tempo. L'algoritmo viene implementato associando un contatore a ciascuna pagina.
Cosa puoi fare con noi?
- La pagina che non è stata utilizzata per più tempo nella memoria principale è quella che verrà selezionata per la sostituzione.
- Facile da implementare, tieni un elenco, sostituisci le pagine guardando indietro nel tempo.
Caratteristiche
- Il metodo di sostituzione LRU ha il conteggio più alto. Questo contatore è anche chiamato registro di invecchiamento e specifica l'età e la frequenza con cui le pagine associate devono essere referenziate.
- La pagina che non è stata utilizzata per più tempo nella memoria principale è quella che dovrebbe essere selezionata per la sostituzione.
- Mantiene anche un elenco e sostituisce le pagine guardando indietro nel tempo.
Tasso di guasto
Il tasso di guasto è la frequenza con cui un sistema o un componente progettato si guasta. Viene espresso in guasti per unità di tempo ed è indicato dalla lettera greca λ (lambda).
Vantaggi della memoria virtuale
Ecco i vantaggi/benefici dell'utilizzo della memoria virtuale:
- La memoria virtuale aiuta ad aumentare la velocità quando è richiesto solo un particolare segmento del programma per l'esecuzione del programma.
- È molto utile nell'implementazione di un ambiente multiprogrammazione.
- Ti consente di eseguire più applicazioni contemporaneamente.
- Ti aiuta a adattare molti programmi di grandi dimensioni in programmi più piccoli.
- Dati o codici comuni possono essere condivisi tra le memorie.
- Un processo può diventare persino più grande di tutta la memoria fisica disponibile.
- I dati/il codice devono essere letti dal disco ogni qualvolta sia necessario.
- Il codice può essere posizionato ovunque nella memoria fisica senza richiedere lo spostamento.
- Nella memoria principale dovrebbero essere mantenuti più processi, il che aumenta l'uso efficace della CPU.
- Ogni pagina viene memorizzata su un disco finché non è necessaria, dopodiché viene rimossa.
- Permette di eseguire più applicazioni contemporaneamente.
- Non esiste un limite specifico al grado di multiprogrammazione.
- È consigliabile scrivere programmi di grandi dimensioni, poiché lo spazio di indirizzamento virtuale disponibile è maggiore rispetto alla memoria fisica.
Svantaggi della memoria virtuale
Ecco gli svantaggi dell'utilizzo della memoria virtuale:
- Le applicazioni possono essere eseguite più lentamente se il sistema utilizza la memoria virtuale.
- Probabilmente ci vuole più tempo per passare da un'applicazione all'altra.
- Offre meno spazio su disco rigido a tua disposizione.
- Riduce la stabilità del sistema.
- Consente l'esecuzione di applicazioni di grandi dimensioni in sistemi che non dispongono di sufficiente RAM fisica per eseguirle.
- Non offre le stesse prestazioni della RAM.
- Influisce negativamente sulle prestazioni generali di un sistema.
- Occupa spazio di archiviazione che potrebbe essere utilizzato per la memorizzazione di dati a lungo termine.

