Sistemi Operativi Gestione della memoria
Transcript
Sistemi Operativi Gestione della memoria
Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE E MEMORIA VIRTUALE Sistemi Operativi 7.1 D. Talia - UNICAL Gestione della memoria Segmentazione Segmentazione con paginazione Memoria Virtuale Paginazione su richiesta Sostituzione delle pagine Trashing Esempi: Windows NT e Solaris Sistemi Operativi 7.2 D. Talia - UNICAL 1 Segmentazione La segmentazione è uno schema di gestione della memoria che corrisponde alla vista della memoria che in genere ha l’utente. Un programma è una collezione di segmenti. Un segmento è una unità logica di memoria come: ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ programma principale, procedura e/o funzione, metodo, oggetto, variabili locali, variabili globali, stack, tabella dei simboli, array. Sistemi Operativi 7.3 D. Talia - UNICAL Vista utente di un programma Sistemi Operativi 7.4 D. Talia - UNICAL 2 Vista logica della segmentazione 1 4 1 2 3 2 4 3 spazio del processo utente Sistemi Operativi spazio della memoria fisica 7.5 D. Talia - UNICAL Architettura di segmentazione Un indirizzo logico consiste di una coppia di valori : <numero-segmento, offset> Tabella dei segmenti – assegna indirizzi fisici bi- dimensionali. Ogni elemento della tabella ha: ¾ base – indirizzo di partenza del segmento in memoria. ¾ limite – lunghezza del segmento. Segment-table base register (STBR) punta alla locazione di memoria dove si trova la tabella. Segment-table length register (STLR) indica il numero dei segmenti appartenenti ad un programma; numero di segmento s è legale se s < STLR. Sistemi Operativi 7.6 D. Talia - UNICAL 3 Hardware di segmentazione Sistemi Operativi 7.7 D. Talia - UNICAL Architettura di segmentazione Rilocazione ¾ dinamica ¾ tramite la tabella dei segmenti Condivisione ¾ Segmenti condivisi ¾ stesso numero di segmento Allocazione ¾ first fit / best fit ¾ frammentazione esterna Sistemi Operativi 7.8 D. Talia - UNICAL 4 Architettura di segmentazione Protezione Con ogni entry nella tabella dei segmenti associata: ¾ bit di validazione = 0 ⇒ segmento illegale ¾ privilegi read/write/execute Bit di protezione associati ai segmenti; condivisione di codice a livello di segmento. Poiché i segmenti variano in lunghezza, l’allocazione di memoria è un problema di allocazione dinamica. Sistemi Operativi 7.9 D. Talia - UNICAL Esempio di segmentazione Sistemi Operativi 7.10 D. Talia - UNICAL 5 Condivisione di segmenti Sistemi Operativi 7.11 D. Talia - UNICAL Segmentazione con Paginazione Il S.O. MULTICS ha risolto i problemi di frammentazione esterna e dei tempi lunghi di ricerca tramite la paginazione dei segmenti. Un segmento viene realizzato tramite un insieme di pagine. Soluzione differisce dalla segmentazione “pura” poiché una entry nella tabella dei segmenti non contiene l’indirizzo base di un segmento, ma l’indirizzo base della tabella delle pagine di quel segmento. Sistemi Operativi 7.12 D. Talia - UNICAL 6 Schema di traduzione degli indirizzi in MULTICS Sistemi Operativi 7.13 D. Talia - UNICAL Segmentazione con Paginazione – Intel 386 L’Intel 386 per la gestione della memoria usa segmentazione con paginazione usando uno schema di paginazione a due livelli. Sistemi Operativi 7.14 D. Talia - UNICAL 7 Memoria virtuale Memoria Virtuale – separazione della memoria logica dalla memoria fisica. ¾ Solo una parte del programma sta in memoria per l’esecuzione. ¾ Lo spazio degli indirizzi logici è quindi più grande dello spazio degli indirizzi fisici. ¾ Lo spazio degli indirizzi può essere diviso tra più processi. ¾ Permette una più efficiente creazione dei processi. La memoria virtuale può essere implementata tramite: ¾ Paginazione su richiesta ¾ Segmentazione su richiesta Sistemi Operativi 7.15 D. Talia - UNICAL Memoria Virtuale maggiore della Memoria Fisica Sistemi Operativi 7.16 D. Talia - UNICAL 8 Paginazione su richiesta Si porta una pagina in memoria solo quando serve. ¾ minore I/O ¾ minore memoria necessaria ¾ risposta più veloce ¾ Maggior numero di utenti Quando serve una pagina ⇒ riferimento ad essa ¾ riferimento non valido ⇒ abort ¾ non in memoria ⇒ trasferire in memoria Sistemi Operativi 7.17 D. Talia - UNICAL Trasferimento di memoria paginata su disco contiguo Sistemi Operativi 7.18 D. Talia - UNICAL 9 Bit Valido/Non valido Ad ogni entry della tabella è associato un bit di validità (1 ⇒ in memoria, 0 ⇒ non in memoria ma su disco) Inizialmente il bit di validità è uguale a 0 per ogni entry. Esempio di tabella delle pagine: Frame # Bit valido- nonvalido 1 1 1 1 0 1 1 0 0 Durante la traduzione indirizzi, se il bit è 0 ⇒ page Tabelladegli delle pagine fault. Sistemi Operativi 7.19 D. Talia - UNICAL Tabella delle pagine con alcune pagine non in memoria Sistemi Operativi 7.20 D. Talia - UNICAL 10 Page Fault Se si tenta di accedere una pagine non in memoria ⇒ page fault. Il S.O. controlla in una tabella interna del processo: ¾ se il riferimento non è valido ⇒ abort. ¾ Se il riferimento è valido occorre caricare la pagina. Si trova un frame libero. Si carica la pagina nel frame. Si aggiorna le tabelle, bit di validazione = 1. Viene riavviata l’esecuzione: la pagina diventa quella più recente. Sistemi Operativi 7.21 D. Talia - UNICAL Passi della gestione di un Page Fault Sistemi Operativi 7.22 D. Talia - UNICAL 11 Cosa accade quando non c’è un frame libero ? Sostituzione delle pagine si trova una pagina in memoria che non è usata e si porta sul disco (swap out). ¾ algoritmo ¾ prestazioni si vuole un algoritmo che dia il numero minimo di page fault. Alcune pagine possono essere portate in memoria varie volte. Sistemi Operativi D. Talia - UNICAL 7.23 Prestazioni della paginazione su richiesta 0 ≤ p ≤ 1.0 Probabilità di page fault: ¾ se p = 0 ¾ se p = 1 nessun page fault ogni accesso provoca un page fault. Tempo di accesso effettivo (TAE) TAE = (1 – p) x ma + p (tempo di page fault) Sistemi Operativi 7.24 D. Talia - UNICAL 12 Esempio di paginazione su richiesta Tempo di accesso in memoria = 100 nanosecondi Il 50% del tempo la pagina che è stata rimpiazzata è stata modificata e quindi ha bisogno di essere portata sul disco. Tempo di page fault = 25 msec = 25000 µsec TAE = (1 – p) x 100 + p x (25000000) = 100 + (25000000-100) x p (in msec) Sistemi Operativi 7.25 D. Talia - UNICAL Sostituzione delle pagine Quando occorre caricare una pagina e non c’è un frame libero si può usare la sostituzione delle pagine. Il meccanismo di gestione dei page fault deve essere modificato per gestire questa possibilità. Uso di un modify (dirty) bit per ridurre il costo del trasferimento delle pagine – solo le pagine modificate vengono scritte sul disco. La sostituzione delle pagine completa la separazione tra memoria logica e memoria fisica: un grande memoria virtuale si può realizzare su una piccola memoria fisica. Sistemi Operativi 7.26 D. Talia - UNICAL 13 Necessità di sostituzione delle pagine Sistemi Operativi 7.27 D. Talia - UNICAL Sostituzione delle pagine Operazioni per la sostituzione: 1. Trova la locazione della pagina richiesta sul disco. 2. Trova un frame libero a. Se esiste usalo; b. Se non c’è un frame libero seleziona un frame vittima secondo un algoritmo di sostituzione; c. Scrivi la pagina vittima sul disco e aggiorna le tabelle; 3. Leggi la pagina richiesta nel frame liberato e aggiorna le tabelle 4. Riavvia il processo. Sistemi Operativi 7.28 D. Talia - UNICAL 14 Sostituzione di una pagina Sistemi Operativi 7.29 D. Talia - UNICAL Algoritmi di sostituzione delle pagine Criterio di scelta: L’algoritmo con la minima frequenza di page fault. Si valuta gli algoritmi eseguendoli su una particolare sequenza (stringa) di riferimenti alla memoria calcolando il numero di page fault che si verificano. e Negli esempi la stringa usata è: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Sistemi Operativi 7.30 D. Talia - UNICAL 15 Numero di page fault in funzione del numero di frame Sistemi Operativi D. Talia - UNICAL 7.31 Algoritmo First-In-First-Out (FIFO) Si sostituisce la pagina più vecchia. Stringa: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 frame (3 pagine possono essere in memoria per processo) 4 frame Sistemi Operativi 1 1 4 5 2 2 1 3 3 3 2 4 1 1 5 4 2 2 1 5 3 3 2 4 4 3 9 page fault 10 page fault Anomalia di Belady più frame ⇒ più page fault 7.32 D. Talia - UNICAL 16 Sostituzione FIFO Sistemi Operativi 7.33 D. Talia - UNICAL 7.34 D. Talia - UNICAL Anomalia di Belady Sistemi Operativi 17 Algoritmo Ottimale Sostituisce la pagina che non verrà usata per il periodo di tempo più lungo. Esempio: 4 frame stringa: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1 4 6 page fault 2 3 4 5 Come predire il futuro (uso delle pagine) ? Usato come paragone per valutare altri algoritmi. Sistemi Operativi 7.35 D. Talia - UNICAL 7.36 D. Talia - UNICAL Algoritmo Ottimale Sistemi Operativi 18 Algoritmo Least Recently Used (LRU) Sostituisce la pagina che non è stata usata per il periodo di tempo più lungo. Stringa: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1 5 2 4 3 5 4 3 Implementazione con contatore Implementazione con stack Sistemi Operativi 7.37 D. Talia - UNICAL 7.38 D. Talia - UNICAL Sostituzione LRU Sistemi Operativi 19 Sostituzione LRU Implementazione con contatore ¾ Ogni entry di pagina ha un contatore; ogni volta che la pagina viene referenziata si copia il clock nel contatore. ¾ Quando occorre sostituire una pagina, occorre cercare la pagina con il valore del clock più piccolo. Implementazione con stack ¾ Si mantiene uno stack con i numeri delle pagina con la pagina più recente sta in cima e la LRU in fondo: ¾ La pagina referenziata si mette in cima: spostare il numero di pagina in prima posizione richiede la modifica di sei puntatori ¾ Non bisogna fare la ricerca. Sistemi Operativi 7.39 D. Talia - UNICAL Implementazione LRU con lo stack Sistemi Operativi 7.40 D. Talia - UNICAL 20 Algoritmi di approssimazione ad LRU L’algoritmo LRU richiede l’uso di un supporto hardware. Se non esiste si usano algoritmi approssimati: Bit di riferimento ¾ Ad ogni pagina è associato un bit, inizialmente = 0 ¾ Quando la pagina è usata viene messo ad 1. ¾ Si sostituisce una pagina con bit a 0 (se esiste). L’ordine di uso non si conosce. Seconda chance ¾ Si usa il bit di riferimento. ¾ Clock (o coda circolare). ¾ Se una pagina (in senso orario) ha il bit = 1, allora: bit <-- 0. Lascia la pagina in memoria. Sostituisce la prossima pagina (in senso orario) con bit=0. Sistemi Operativi 7.41 D. Talia - UNICAL Algoritmo Seconda Chance (clock) Sistemi Operativi 7.42 D. Talia - UNICAL 21 Algoritmi con conteggio Usano un contatore del numero dei riferimenti che sono tati fatti su ogni pagina. Algoritmo LFU: minimo. sostituisce le pagine con il contatore Algoritmo MFU: sostituisce le pagine con il contatore massimo. (basato sull’idea che con la pagina con il contatore minimo è stata inserita da poco e non è stata usata) Sistemi Operativi 7.43 D. Talia - UNICAL Thrashing Se un processo non ha abbastanza pagine in memoria il tasso di page fault è molto alto. Questo crea: ¾ bassa utilizzazione della CPU. ¾ Il S.O. può credere che occorre aumentare il grado di multiprogrammazione. ¾ Un nuovo processo viene inserito in memoria. Thrashing ≡ un processo è occupato principalmente nella attività di paginazione. Sistemi Operativi 7.44 D. Talia - UNICAL 22 Thrashing Quando la paginazione funziona ? Modello di località (set di pagine usate insieme) ¾ Un processo di sposta da una località all’altra ¾ Le località si possono sovrapporre. Perché si verifica il thrashing ? Sistemi Operativi Σ spazi di località > spazio di memoria locale 7.45 D. Talia - UNICAL Località in sequenze di riferimenti a memoria Sistemi Operativi 7.46 D. Talia - UNICAL 23 Esempi di gestione di memoria virtuale Windows NT Usa la paginazione su richiesta paging con clustering. Il clustering mantiene le pagine vicine all pagina che ha creato il page fault. Solaris 2 Mantiene una lista di pagine libere da assegnare ai processi che hanno avuto un page fault. Sistemi Operativi 7.47 D. Talia - UNICAL Windows NT Ai processi viene assegnato un working set minimo e un working set massimo. Working set minimo è delle pagine che il processo avrà in memoria (garantito) Gli potranno essere assegnate altre pagine fino al working set massimo. Quando l’ammontare di memoria libera nel sistema è minore di una data soglia viene eseguito un algoritmo di automatic working set trimming per aumentare la dimensione della memoria libera. Il working set trimming rimuove dai processi le pagine in eccesso rispetto al loro working set minimo. Sistemi Operativi 7.48 D. Talia - UNICAL 24 Solaris 2 Lotsfree: parametro di soglia per iniziare la paginazione. Paginazione è eseguita dal processo pageout. Pageout scandisce le pagine usando un algoritmo basato sulla coda circolare modificato. Scanrate è la velocità con cui le pagine sono scandite. Varia tradue valori: slowscan e fastscan. Pageout è invocato più o meno frequentemente in dipendenza della memoria libera disponibile. Sistemi Operativi 7.49 D. Talia - UNICAL Scanner delle pagine di Solaris Sistemi Operativi 7.50 D. Talia - UNICAL 25 Domande Discutere le differenze principali tra paginazione e segmentazione. Quali sono i benefici di usare la segmentazione paginata ? Spiegare le operazioni da eseguire per la gestione di un page fault. Discutere le differenze tra gli algoritmi di sostituzione FIFO e LRU. Spiegare il funzionamento implementazione a stack. dell’algoritmo LRU con Analizzare una situazione in cui si verifica trashing di pagine. Sistemi Operativi 7.51 D. Talia - UNICAL 26