Memoria virtuale nel sistema operativo: cos'è, demand paging, vantaggi
Cos'è la memoria virtuale?
Memoria virtuale è un meccanismo di memorizzazione che offre all'utente l'illusione di avere una memoria principale molto grande. Viene fatto trattando una parte della memoria secondaria come 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 utilizzare la memoria virtuale:
- Ogni volta che il tuo computer non ha spazio nella memoria fisica, scrive ciò che deve ricordare sul disco rigido in un file di scambio come memoria virtuale.
- Se un computer è in esecuzione Windows necessita di più memoria/RAM, quindi installata nel sistema, utilizza una piccola porzione del disco rigido per questo scopo.
Come funziona la memoria virtuale?
Nel mondo moderno, la memoria virtuale è diventata abbastanza comune al giorno d'oggi. Viene utilizzato ogni volta che alcune pagine richiedono di essere caricate nella memoria principale per l'esecuzione e la memoria non è disponibile per quel numero di pagine.
Quindi, in tal caso, invece di impedire alle pagine di entrare nella memoria principale, il sistema operativo cerca lo spazio RAM minimo utilizzato negli ultimi tempi o che non viene referenziato nella memoria secondaria per fare spazio alle nuove pagine in la memoria principale.
Capiamo gestione della memoria virtuale con l'aiuto di un esempio.
Per esempio
Supponiamo che un sistema operativo richieda 300 MB di memoria per archiviare tutti i programmi in esecuzione. Tuttavia, attualmente ci sono solo 50 MB di memoria fisica disponibile archiviata nella RAM.
- Il sistema operativo configurerà quindi 250 MB di memoria virtuale e utilizzerà un programma chiamato Virtual Memory Manager (VMM) per gestire quei 250 MB.
- Pertanto, in questo caso, VMM creerà un file sul disco rigido di 250 MB per archiviare la memoria aggiuntiva richiesta.
- Il sistema operativo procederà ora all'indirizzamento della memoria poiché considera 300 MB di memoria reale archiviati nella RAM, anche se sono disponibili solo 50 MB di spazio.
- È compito del VMM 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 lo scambio in cui i processi archiviati nella memoria secondaria e le pagine vengono caricati solo su richiesta, non in anticipo.
Pertanto, quando si verifica un cambio di contesto, il sistema operativo non copia mai nessuna delle pagine del vecchio programma dal disco o nessuna delle pagine del nuovo programma nella memoria principale. Invece, inizierà l'esecuzione del nuovo programma dopo aver caricato la prima pagina e recupererà le pagine del programma, a cui viene fatto riferimento.
Durante l'esecuzione del programma, se il programma fa riferimento ad una pagina che potrebbe non essere disponibile nella memoria principale perché è stata scambiata, il processore la considera come un riferimento di memoria non valido. Questo perché l'errore di pagina e i trasferimenti restituiscono il controllo dal programma al sistema operativo, che richiede di archiviare nuovamente la pagina in memoria.
Tipi di metodi di sostituzione della pagina
Ecco alcuni importanti metodi di sostituzione della pagina
- 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, la pagina recentemente arrivata in memoria viene rimossa. Pertanto, è facile decidere quale pagina deve essere rimossa poiché il suo numero di identificazione è sempre nello 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 garantisce il minor numero di errori di pagina. Questo algoritmo è difficile da implementare.
- Un metodo di algoritmo di sostituzione della pagina ottimale ha il tasso di errori di pagina più basso di tutti gli algoritmi. Questo algoritmo esiste e dovrebbe chiamarsi MIN o OPT.
- Sostituisci la pagina che non verrà utilizzata per un periodo di tempo più lungo. Utilizza solo il tempo in cui è necessario utilizzare una pagina.
Sostituzione della pagina LRU
Il formato completo di LRU è la pagina utilizzata meno di recente. Questo metodo aiuta il sistema operativo a individuare l'utilizzo della pagina in un breve periodo di tempo. Questo algoritmo dovrebbe essere implementato associando un contatore ad una pagina pari.
Come funziona?
- La pagina che non è stata utilizzata per più tempo nella memoria principale sarà 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 registri di invecchiamento, che specificano la loro età e quanto dovrebbero essere referenziate anche le pagine associate.
- La pagina che non è stata utilizzata per più tempo nella memoria principale è quella che deve 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. È espresso in guasti per unità di tempo. È indicato con la lettera greca ? (lambda).
Vantaggi della memoria virtuale
Ecco i vantaggi/vantaggi 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.
- Il processo potrebbe diventare persino più grande di tutta la memoria fisica.
- I dati/codice devono essere letti dal disco ogni volta che è 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 archiviata su un disco finché non viene richiesta, dopodiché verrà rimossa.
- Permette di eseguire più applicazioni contemporaneamente.
- Non esiste un limite specifico al grado di multiprogrammazione.
- Dovrebbero essere scritti programmi di grandi dimensioni, poiché lo spazio degli indirizzi virtuali disponibile è maggiore rispetto alla memoria fisica.
Svantaggi della memoria virtuale
Ecco gli svantaggi/contro dell'utilizzo della memoria virtuale:
- Le applicazioni possono essere eseguite più lentamente se il sistema utilizza la memoria virtuale.
- Probabilmente richiede più tempo per passare da un'applicazione all'altra.
- Offre meno spazio sul disco rigido per l'uso.
- Riduce la stabilità del sistema.
- Consente l'esecuzione di applicazioni più grandi in sistemi che non offrono solo RAM fisica sufficiente per eseguirle.
- Non offre le stesse prestazioni della RAM.
- Influisce negativamente sulle prestazioni generali di un sistema.
- Occupare lo spazio di archiviazione che potrebbe essere utilizzato per l'archiviazione dei dati a lungo termine.
Sintesi
- La memoria virtuale è un meccanismo di archiviazione che offre all'utente l'illusione di avere una memoria principale molto grande.
- La memoria virtuale è necessaria ogni volta che il computer non dispone di spazio nella memoria fisica
- Un meccanismo di paginazione su richiesta è molto simile a un sistema di paginazione con scambio in cui i processi archiviati nella memoria secondaria e le pagine vengono caricati solo su richiesta, non in anticipo.
- Importanti metodi di sostituzione della pagina sono 1) FIFO 2) Algoritmo ottimale 3) Sostituzione della pagina LRU.
- Nel metodo FIFO (First-in-first-out), la memoria seleziona la pagina per la sostituzione che è rimasta nell'indirizzo virtuale della memoria per più tempo.
- Il metodo di sostituzione della pagina ottimale seleziona quella pagina per una sostituzione per la quale il tempo fino al riferimento successivo è più lungo.
- Il metodo LRU aiuta il sistema operativo a individuare l'utilizzo della pagina in un breve periodo di tempo.
- La memoria virtuale aiuta ad aumentare la velocità quando è richiesto solo un particolare segmento del programma per l'esecuzione del programma.
- Le applicazioni possono essere eseguite più lentamente se il sistema utilizza la memoria virtuale.