Sistemi Operativi - 10: Memoria Virtuale

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quale fattore contribuisce maggiormente alla prevenzione del thrashing?

  • Sufficiente memoria principale (correct)
  • Dimensione delle pagine
  • Utilizzo di cache
  • Elevato grado di multiprogrammazione

Pagine più piccole tendono a ridurre il numero di page fault.

False (B)

Come influisce l'accesso agli array bidimensionali sulla memoria virtuale?

Aumenta il rischio di page fault.

Le pagine devono essere sempre dimensionate in potenze di ___.

<p>2</p> Signup and view all the answers

Abbina le dimensioni delle pagine alle loro conseguenze:

<p>Pagine piccole = Peggiori prestazioni nell'uso dell'HD Pagine grandi = Meno page fault</p> Signup and view all the answers

Qual è la formula per calcolare il tempo di accesso efficace (eat)?

<p>eat = [(1-p) × ma] + [p × tempo di gestione del page fault] (A)</p> Signup and view all the answers

Un page fault si verifica quando il dato richiesto non è presente in memoria principale.

<p>True (A)</p> Signup and view all the answers

Qual è il tempo medio di gestione di un page fault, se si trova su Hard Disk?

<p>8 millisecondi</p> Signup and view all the answers

Abbina i seguenti processi con il loro tempo medio di gestione:

<p>Gestire il page fault = 1 ÷ 100 µ sec Recuperare la pagina dalla memoria secondaria = 8 millisecondi Riavviare il processo = 1 ÷ 100 µ sec</p> Signup and view all the answers

Quale delle seguenti affermazioni è vera riguardo alla probabilità di page fault (p)?

<p>p deve essere minore di 2,5 × 10^-6 per mantenere un degrado massimo del 10% (A)</p> Signup and view all the answers

Quanti accessi in RAM può generare un processo che esegue un milione di istruzioni?

<p>Circa 400.000</p> Signup and view all the answers

Qual è la funzione principale dell'area di swap?

<p>Liberare spazio in memoria primaria (B)</p> Signup and view all the answers

Le pagine di codice devono essere sempre salvate nell'area di swap.

<p>False (B)</p> Signup and view all the answers

Che cosa succede quando si verifica un page fault e non ci sono frame liberi nella RAM?

<p>Il SO sceglie una pagina vittima da rimuovere e la salva nell'area di swap, poi carica la pagina mancante nel frame liberato.</p> Signup and view all the answers

Quando si verifica un page fault, una pagina che deve essere rimossa dalla RAM è chiamata ______.

<p>pagina vittima</p> Signup and view all the answers

Abbina le seguenti azioni con la loro descrizione:

<p>Scelta della pagina vittima = Rimuovere una pagina dalla RAM Salvataggio nella swap area = Conservare i dati modificati Caricamento della pagina mancante = Portare la pagina nella RAM Swapping = Spostare un pezzo di processo tra RAM e disco</p> Signup and view all the answers

Qual è uno degli obiettivi della memoria virtuale?

<p>Permettere l'esecuzione di processi più grandi della memoria disponibile (D)</p> Signup and view all the answers

Se la pagina vittima è stata modificata, non è necessario salvarla nella swap area.

<p>False (B)</p> Signup and view all the answers

Qual è il compito del sistema operativo in caso di page fault?

<p>Scegliere una pagina vittima, salvare la pagina nella swap area (se necessario) e caricare la pagina mancante.</p> Signup and view all the answers

L'area di swap viene utilizzata principalmente per gestire il ______ nella memoria.

<p>page fault</p> Signup and view all the answers

Quale dei seguenti descrive meglio il funzionamento dell'algoritmo della Seconda Chance?

<p>Dà una seconda possibilità alle pagine con reference bit a 1. (B)</p> Signup and view all the answers

L'algoritmo della Seconda Chance funziona sempre più efficacemente dell'algoritmo FIFO.

<p>False (B)</p> Signup and view all the answers

Cosa accade a una pagina con reference bit a 0 quando si verifica un page fault?

<p>La pagina viene selezionata come vittima e sostituita.</p> Signup and view all the answers

In caso di page fault, il sistema operativo esamina la pagina entrata in RAM da più ______.

<p>tempo</p> Signup and view all the answers

Abbina i seguenti termini con le loro definizioni:

<p>Page Fault = Situazione in cui una pagina non è in RAM Reference Bit = Indicatore se una pagina è stata utilizzata di recente FIFO = Politica di sostituzione basata sull'ordine di arrivo Vittima = Pagina selezionata per essere sostituita</p> Signup and view all the answers

Cosa succede al reference bit di una pagina quando le viene data una seconda chance?

<p>Viene azzerato a 0. (C)</p> Signup and view all the answers

Il sistema operativo può sapere in quale ordine sono state usate le pagine in RAM.

<p>False (B)</p> Signup and view all the answers

Cosa succede se tutte le pagine hanno il reference bit a 1?

<p>Il SO torna alla prima pagina e la seleziona come vittima.</p> Signup and view all the answers

Il sistema operativo passa alla pagina successiva ______ il reference bit è a 1.

<p>se</p> Signup and view all the answers

Quale algoritmo si utilizza nel caso in cui tutte le pagine abbiano il reference bit a 1?

<p>Algoritmo FIFO (B)</p> Signup and view all the answers

Quale tra le seguenti affermazioni descrive meglio un buon algoritmo di sostituzione delle pagine?

<p>Minimizza il numero di page fault (D)</p> Signup and view all the answers

Una sequenza di riferimenti può generare page fault anche se si utilizza la stessa pagina di riferimento consecutivamente.

<p>True (A)</p> Signup and view all the answers

Qual è la definizione di 'page fault'?

<p>Un errore che si verifica quando un programma cerca di accedere a una pagina non presente in memoria.</p> Signup and view all the answers

Con un solo frame disponibile in memoria, la sequenza 10, 7, 4, 5, 6, 1, 10, 4 genera _____ page fault.

<p>8</p> Signup and view all the answers

Quale di queste opzioni rappresenta un modo per valutare la bontà di un algoritmo di sostituzione delle pagine?

<p>Generare sequenze di riferimenti in modo casuale (C)</p> Signup and view all the answers

Gli algoritmi di rimpiazzamento delle pagine non sono importanti per la gestione della memoria.

<p>False (B)</p> Signup and view all the answers

Cosa si intende per 'frame' in contesto di gestione della memoria?

<p>Un'unità di memoria che può contenere una pagina.</p> Signup and view all the answers

La sequenza di riferimento 10, 7, 7, 7, 4, 5, 5, 5, 5, 6, 1, 10, 10, 10, 10, 4 genera _____ page fault con un solo frame disponibile.

<p>8</p> Signup and view all the answers

Abbina i seguenti termini con la loro descrizione corretta:

<p>Page fault = Errore di accesso a una pagina non presente in memoria Frame = Unità di memoria che contiene una pagina Algoritmo di sostituzione = Strategia per gestire il rimpiazzo delle pagine Sequenza di riferimento = Ordine in cui le pagine vengono accedute</p> Signup and view all the answers

In quale situazione un algoritmo di sostituzione delle pagine potrebbe risultare meno efficace?

<p>Quando ci sono pochi frame disponibili (C)</p> Signup and view all the answers

Flashcards

Thrashing

Il fenomeno in cui un processo fa continuamente richieste di pagine in memoria diventando inefficiente e rallentando l'intero sistema.

Cause del Thrashing

La dimensione della memoria virtuale è troppo piccola rispetto al numero di processi in esecuzione, causando un eccessivo scambio di dati tra RAM e disco.

Dimensione delle pagine

La dimensione delle pagine determina la quantità di dati che possono essere scambiati tra RAM e disco in un singolo accesso, influenzando prestazioni e uso della memoria.

Vantaggi e svantaggi di pagine piccole

Pagine più piccole portano a tabelle di pagina più grandi e a un utilizzo del disco più frequente, ma a una frammentazione interna minore.

Signup and view all the flashcards

Vantaggi e svantaggi di pagine grandi

Pagine più grandi riducono la frammentazione interna, ma portano a tabelle di pagina più piccole e a un utilizzo del disco meno frequente.

Signup and view all the flashcards

MA (Tempo di Accesso in Memoria)

Tempo di accesso in memoria se il dato è presente. Ad esempio, 100-200 nanosecondi.

Signup and view all the flashcards

p (Probabilità di Page Fault)

Probabilità che si verifichi un page fault.

Signup and view all the flashcards

EAT (Tempo di Accesso Effettivo)

Tempo medio di accesso, considera il tempo di accesso alla memoria + il tempo per gestire un page fault se necessario.

Signup and view all the flashcards

Tempo di gestione del page fault

Tempo impiegato per recuperare una pagina dalla memoria secondaria. Dipende dal dispositivo di memorizzazione. In genere richiede millisecondi.

Signup and view all the flashcards

Effetto dei page fault sul EAT

Se p = 0.001, un page fault ogni 1000 accessi, il tempo medio di accesso (EAT) aumenta di oltre 40 volte!.

Signup and view all the flashcards

Impatto del numero di page fault sulle prestazioni

Il numero di page fault deve essere molto basso per mantenere le prestazioni del sistema. Troppe page fault aumentano drasticamente il EAT e danneggiano il throughput.

Signup and view all the flashcards

Migliorare il tempo di gestione del page fault

Ridurre il tempo di gestione del page fault può migliorare le prestazioni del sistema. Rileggere la pagina da memoria secondaria il più velocemente possibile.

Signup and view all the flashcards

Algoritmi di sostituzione delle pagine

Un algoritmo di sostituzione delle pagine è un algoritmo che decide quale pagina in memoria principale (MP) deve essere rimossa quando è necessario caricare una nuova pagina. L'obiettivo è minimizzare il numero di 'page fault', ovvero gli accessi alla memoria secondaria.

Signup and view all the flashcards

Sequenza di riferimenti in memoria principale

La sequenza di riferimenti in memoria principale rappresenta l'ordine in cui le pagine sono richieste dalla CPU. Può essere generata in modo casuale o dall'esecuzione di programmi reali.

Signup and view all the flashcards

Page fault

Un 'page fault' si verifica quando la CPU tenta di accedere a una pagina che non è presente in memoria principale. Questo comporta un accesso alla memoria secondaria, un'operazione molto più lenta.

Signup and view all the flashcards

Memoria con un solo frame

Se la memoria principale ha un solo frame disponibile, allora ogni accesso a una pagina diversa da quella già presente in memoria causerà un 'page fault'.

Signup and view all the flashcards

Accessi consecutivi alla stessa pagina

Se la CPU accede più volte alla stessa pagina, non si verificheranno 'page fault' per gli accessi successivi, poiché la pagina sarà già presente in memoria principale.

Signup and view all the flashcards

Obiettivo degli algoritmi di sostituzione

Un buon algoritmo di sostituzione delle pagine mira a minimizzare il numero di 'page fault' che si verificano durante l'esecuzione di un programma.

Signup and view all the flashcards

Algoritmi di rimpiazzamento delle pagine

Gli algoritmi di sostituzione delle pagine sono anche conosciuti come algoritmi di rimpiazzamento delle pagine.

Signup and view all the flashcards

Sequenza di indirizzi logici

La sequenza di indirizzi logici è generata dalla CPU durante l'esecuzione delle istruzioni.

Signup and view all the flashcards

Numero della pagina

La sequenza di indirizzi logici specifica solo il numero della pagina, non l'indirizzo preciso all'interno della pagina.

Signup and view all the flashcards

Importanza del numero della pagina

Il numero della pagina è importante per determinare quale pagina deve essere caricata in memoria principale.

Signup and view all the flashcards

Algoritmo di Paging con Bit di Riferimento

Un algoritmo di paging che tiene traccia di quali pagine sono state usate di recente impostando un bit di riferimento (reference bit) per ciascuna. Questo bit viene impostato a 1 quando la pagina viene usata e viene azzerato a 0 quando non viene usata.

Signup and view all the flashcards

Algoritmo FIFO

L'algoritmo FIFO, noto anche come First In First Out, è un algoritmo di paging che rimuove la pagina più vecchia dalla memoria quando è necessario liberare spazio per una nuova pagina.

Signup and view all the flashcards

Algoritmo LRU

L'algoritmo LRU, noto anche come Least Recently Used, è un algoritmo di paging che rimuove la pagina meno utilizzata di recente dalla memoria quando è necessario liberare spazio per una nuova pagina.

Signup and view all the flashcards

Algoritmo della Seconda Chance

L'algoritmo della Seconda Chance è un'approssimazione dell'algoritmo LRU che utilizza un bit di riferimento per dare una seconda chance alle pagine che sono state usate di recente.

Signup and view all the flashcards

Come funziona l'algoritmo della Seconda Chance?

In caso di page fault, l'algoritmo della Seconda Chance esamina la pagina entrata in RAM da più tempo e verifica il suo bit di riferimento. Se il bit è a 0, la pagina viene rimossa dalla memoria. Se il bit è a 1, la pagina ottiene una seconda chance e il suo bit di riferimento viene azzerato.

Signup and view all the flashcards

Cosa succede quando tutti i bit sono a 1?

Quando tutte le pagine nella RAM hanno il bit di riferimento a 1, l'algoritmo della Seconda Chance si riduce all'algoritmo FIFO.

Signup and view all the flashcards

Reference bit

Il reference bit viene impostato a 1 quando una pagina viene utilizzata. Ciò significa che la pagina è stata accessibile o modificata.

Signup and view all the flashcards

Page Replacement

Il sistema operativo decide quale pagina rimuovere dalla memoria principale quando si verifica una page fault. Questo processo è chiamato page replacement.

Signup and view all the flashcards

Cosa è l'area di swap?

Un'area di memoria secondaria utilizzata per ospitare pagine che non sono attualmente in memoria primaria (RAM). Ciò consente di eseguire processi che richiedono più memoria di quella fisicamente disponibile.

Signup and view all the flashcards

Cosa è un page fault?

La situazione in cui un processo tenta di accedere a una pagina che non è presente in memoria primaria. Questo porta a un'interruzione del processo, che deve attendere che la pagina mancante venga caricata dalla memoria secondaria.

Signup and view all the flashcards

Cosa significa sostituire una pagina?

L'azione di rimuovere una pagina dalla memoria primaria (RAM) per liberare uno spazio per una nuova pagina. La pagina rimossa viene salvata nell'area di swap, in modo che possa essere recuperata in seguito se necessario.

Signup and view all the flashcards

Cosa è una pagina vittima?

In caso di page fault, la pagina selezionata per essere rimossa dalla RAM. La scelta della pagina vittima può essere effettuata usando diversi algoritmi, come l'algoritmo FIFO o LRU.

Signup and view all the flashcards

Cosa è l'algoritmo FIFO (First-In, First-Out)?

Un algoritmo usato per la gestione della memoria virtuale che sostituisce la pagina che è stata nella memoria primaria (RAM) per il tempo più lungo. Questo algoritmo è relativamente semplice, ma può essere inefficace se la pagina sostituita viene utilizzata ancora in seguito.

Signup and view all the flashcards

Cosa è l'algoritmo LRU (Least Recently Used)?

Un algoritmo usato per la gestione della memoria virtuale che sostituisce la pagina che è stata meno usata di recente. Questo algoritmo tende a essere più efficiente di FIFO, perché tiene conto del tempo di utilizzo delle pagine.

Signup and view all the flashcards

Perché è necessario salvare una pagina vittima nell'area di swap?

La memorizzazione in memoria secondaria di una pagina dalla memoria primaria (RAM) prima che questa venga sovrascritta da un'altra. Questo è necessario solo per le pagine che contengono dati modificati o fanno parte dello stack o heap di un processo.

Signup and view all the flashcards

Qual è lo scopo principale dell'area di swap?

L'area di swap viene utilizzata per liberare spazio in memoria primaria (RAM) e ospitare pagine mancanti che devono essere caricate in RAM. Questa è la ragione principale per cui la memoria virtuale è così importante per il sistema operativo.

Signup and view all the flashcards

Qual è il vantaggio della memoria virtuale e dell'area di swap?

La memoria virtuale consente di eseguire processi più grandi della memoria fisica disponibile e di eseguire più processi contemporaneamente, anche se la dimensione totale di tutti questi processi è maggiore della RAM disponibile.

Signup and view all the flashcards

Study Notes

Memoria Virtuale

  • La memoria virtuale (MV) è un insieme di tecniche che permettono l'esecuzione di processi, dove codice e/o dati non sono caricati completamente in memoria primaria.
  • I metodi di gestione della memoria principale (MP) tentano di tenere in RAM il maggior numero di processi possibile per aumentare la multiprogrammazione.
  • Per una certa quantità di RAM disponibile in un sistema, il numero di processi che possono stare in MP dipende dalla loro dimensione.
  • La MV funziona perché i programmi non hanno bisogno di essere caricati interamente in MP per essere eseguiti.
  • Esempi di casi in cui ciò si verifica includono codice per trattare condizioni di errore, array, liste, tabelle dichiarate con dimensioni maggiori di quanto effettivamente usate e librerie dinamiche caricate solo quando usate.
  • L'idea di fondo della MV è caricare in MP solo le parti di programma/dati che devono essere effettivamente eseguite in un certo momento dell'esecuzione.

Paginazione su Richiesta (Demand Paging)

  • Idea di base: portare una pagina in MP solo nel momento in cui è richiesto l'accesso ad una locazione di memoria appartenente a quella pagina (un dato o un'istruzione).
  • Quando la CPU esegue un'istruzione che indirizza una locazione di RAM in una pagina diversa da quella in esecuzione e la pagina non è in MP, si dice che il processo ha generato un "page fault".
  • Il sistema operativo (SO) deve sospendere il processo, caricare la pagina mancante in memoria e ripartire il processo dal punto in cui era stato sospeso.
  • Un modulo del SO, detto "pager", si occupa del caricamento della pagina mancante dalla memoria secondaria (MS) in un frame libero della memoria principale (MP).
  • In attesa di completare il caricamento, la CPU viene assegnata ad un altro processo.
  • Quando la pagina è in MP, il processo corrispondente viene rimesso nella coda di ready e riprenderà l'esecuzione dall'istruzione che aveva causato il problema quando sarà scelto dallo scheduler.

Prestazioni della Paginazione su Richiesta

  • Supponiamo di dover leggere un dato in MP. Se il dato è presente, il tempo di accesso è di circa 100-200 nanosecondi (ma). Se c'è un page fault, il tempo di gestione del page fault si aggiunge al tempo di accesso alla pagina, che è piuttosto lungo (circa 8 millisecondi).
  • eat (effective access time) = [(1-p) x ma] + [p x tempo di gestione del page fault], dove p è la probabilità di un page fault.
  • La gestione di un page fault richiede la gestione del page fault (circa 1-100 μsec), il recupero della pagina mancante dalla memoria secondaria (circa 8 millisecondi) e il riavvio del processo (circa 1-100 μsec)
  • Il tempo di esecuzione rallenta a causa della gestione del page fault (p).
  • Per minimizzare il degrado, la probabilità di page fault (p) deve essere molto bassa (es. <2.5 x 10^-6, ovvero meno di un page fault ogni 400.000 accessi in memoria).

L'area di Swap

  • La memoria virtuale ha bisogno di una porzione dell'hard disk (HD) detta area di Swap.
  • All'installazione, sull'HD viene riservata una porzione del disco ad uso esclusivo del SO.
  • L'area di swap è gestita con meccanismi più semplici ed efficienti rispetto al file system per quanto riguarda il posizionamento di pagine dei processi.

Sostituzione delle Pagine

  • Il SO, in caso di page fault e mancanza di frame liberi in RAM, sceglie una "pagina vittima" da rimuovere dalla RAM, salva la pagina vittima nella swap area (se necessario) e carica la pagina mancante nel frame liberato.
  • Le pagine di codice non devono essere salvate in swap perché c'è una copia nel file system.
  • Le pagine di dati modificate devono essere salvate in swap prima di essere rimosse, per mantenere le modifiche.
  • Un dirty bit fa capire se una pagina è stata modificata o meno; il SO salva nella swap solo le pagine con il dirty bit a 1.

Algoritmi di Sostituzione delle Pagine

  • Un buon algoritmo di sostituzione minimizza il numero di page fault.
  • Vari metodi di valutazione possono essere utilizzati per testare la bontà di differenti algoritmi di sostituzione, come sequenze di riferimenti casuali o generate da programmi reali.

Allocazione dei Frame

  • In un sistema multiprogrammato, come distribuiamo i frame disponibili fra i processi?
  • Possibili strategie includono un numero uguale di frame per ogni processo, proporzionale alle dimensioni dei processi o alle loro priorità.

Allocazione Globale e Locale

  • Allocazione globale: la pagina vittima viene scelta tra tutte le pagine in memoria principale (escluso il SO).
  • Allocazione locale: la pagina vittima viene scelta tra le pagine del processo che ha generato il page fault.
  • Le allocazioni globali sono generalmente preferite per sistemi time sharing perché forniscono un throughput più elevato.

Thrashing

  • Il thrashing è un fenomeno di elevata attività di paginazione che peggiora le prestazioni del sistema se i frame sono pochi.
  • Thrashing avviene quando i processi sono costantemente impegnati a caricare e scaricare pagine da/nella memoria principale, causando molti page fault.
  • Il thrashing può essere ridotto diminuendo il numero di processi attivi contemporaneamente.

Altri considerazioni: dimensione delle pagine

  • Le pagine tendono ad essere delle potenze di 2 (es. 4k, 8k) e le dimensioni ottimali delle pagine dipendono da vari fattori, tra cui la grandezza della tabella delle pagine (PT), la frammentazione interna e la latenza del disco.
  • Le pagine piccole (i.e., "più piccole" delle dimensioni tipiche) generano più page fault, mentre le pagine grandi (i.e., "più grandi" delle dimensioni tipiche) possono portare a frammentazione interna e a più operazioni di lettura/scrittura sul disco.

Struttura dei Programmi

  • La struttura dei programmi influenza il numero di page fault.
  • Gli array bidimensionali allocati per riga tendono a generare meno page fault rispetto agli array allocati per colonna in casi in cui si accede agli elementi dei dati secondo le colonne.
  • Le hash table possono generare molti page fault a causa del loro pattern di accesso non sequenziale.

Windows 10

  • Windows 10 utilizza una tecnica di clustering nella demand paging, caricando anche pagine adiacenti a quella richiesta.
  • Imposta un insieme di lavoro minimo e massimo per quantificare le pagine in RAM per processo.
  • Adotta un algoritmo di sostituzione che utilizza la seconda chance per decidere quali pagine rimuovere quando la RAM è a capacità piena.

Solaris

  • Solaris impiegano una paginazione su richiesta standard, ma gestisce i frame liberi.
  • C'è un parametro lostfree, equivalente a circa 1/64 dei frame totali, che segnala la potenziale mancanza di frame liberi.
  • Il processo pageout viene attivato se la quantità di frame liberi scende al di sotto del valore lostfree.
  • Il processo pageout opera in due fasi: la scansione di tutte le pagine in memoria principale per azzerare il bit di riferimento e una seconda scansione delle pagine (in cui quelle senza bit di riferimento vengono riutilizzate e, se modificate, salvate in memoria secondaria prima di essere riutilizzate)

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Memoria Virtuale PDF

More Like This

Use Quizgecko on...
Browser
Browser