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.

  • 🧠 Definizione: La memoria virtuale utilizza una parte della memoria di archiviazione secondaria come memoria principale per eseguire processi di grandi dimensioni.
  • 🎯 Perché necessario: Fornisce memoria aggiuntiva quando la RAM fisica è insufficiente, utilizzando un file di swap su disco.
  • 📥 Servizio di cercapersone a richiesta: Le pagine vengono caricate dal disco nella RAM solo quando vengono effettivamente richiamate.
  • 🔁 Sostituzione della pagina: Gli algoritmi FIFO, Ottimale e LRU decidono quale pagina rimuovere in caso di errore di pagina.
  • Vantaggio: Supporta il multiprogrammazione e consente ai programmi di superare la dimensione della memoria fisica.
  • ⚠️ Inconveniente: È più lento della RAM e può ridurre le prestazioni complessive del sistema.

Memoria virtuale nel sistema operativo

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?

Cercapersone su richiesta

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.

DOMANDE FREQUENTI

Un errore di pagina si verifica quando un programma fa riferimento a una pagina che non è attualmente presente nella memoria principale. Il sistema operativo mette in pausa il programma, carica la pagina richiesta dal disco nella RAM, aggiorna la tabella delle pagine e quindi riprende l'esecuzione.

Il thrashing si verifica quando il sistema impiega più tempo a scambiareping Il numero di pagine tra RAM e disco è superiore al numero di processi in esecuzione. È causato da un grado eccessivo di multiprogrammazione e degrada gravemente le prestazioni. Ridurre i processi attivi o aumentare la RAM può essere d'aiuto.

La RAM è un hardware fisico veloce in cui vengono memorizzati i dati attivi. La memoria virtuale è una tecnica che estende la RAM utilizzando lo spazio su disco come se fosse memoria. La memoria virtuale è molto più capiente, ma anche molto più lenta della RAM reale.

L'intelligenza artificiale può apprendere i modelli di accesso alla memoria di un programma e prevedere quali pagine saranno necessarie a breve. Ciò consente al sistema operativo di mantenere nella RAM le pagine utili e di eliminare quelle necessarie, avvicinandosi all'algoritmo ottimale ideale e riducendo i page fault.

Sì. Analizzando le sequenze di accesso precedenti, i modelli di intelligenza artificiale possono precaricare le pagine prima che vengano richieste e regolare la frequenza con cui vengono scambiate. Ciò riduce i page fault e il thrashing, sebbene sia necessario mantenere bassi gli errori di predizione e l'overhead.

Riassumi questo post con: