Sistemi operativi e distribuiti La memoria virtuale Memoria Virtuale Separazione della memoria logica da quella fisica Un programma potrebbe risiedere in memoria solo parzialmente Lo spazio di indirizzamento logico può essere molto più grande della memoria fisicamente disponibile. Alcune pagine potrebbero essere condivise tra più prccessi Es. il codice binario di un editor che tutti usano La memoria virtuale viene generalmente implementata con dei meccanismi di Paginazione su richiesta (Demand Paging)
Esempio di memoria virtuale più grande della memoria fisica Demand Paging Porto una pagina in memoria solo quando è necessario Diminuiscono le operazioni di I/O Diminuisce la richiesta di memoria Diminuiscono i tempi di attesa Aumentano gli utenti supportati Quando ho un riferimento ad una locazione di memoria, allora la pagina che la contiene è necessaria Riferimento non valido errore pagina non in memoria la recupero dal disco
Bit di validità All interno della tabella delle pagine è associato ad ogni pagina un bit di validità in-memoria 0 sul disco inizialmente il valore è 0 per tutte le pagine Frame # Durante la traduzione dell indirizzo da virtuale a fisico, se il bit di validità è 0, genero un page fault (eccezione di pagina mancante) M page table 0 0 0 bit di validità Tabella delle pagine quando alcune pagine NON sono in memoria
Page Fault La prima volta che una pagina è necessaria viene generato un Page Fault Il sistema operativo cerca di capire se: È un riferimento illegale Bisogna recuperare la pagina Viene allocato un frame (pagina fisica) vuoto La pagina viene trasferita dal disco al frame appena reso disponibile Il bit di validità per quella pagina viene posto a L esecuzione riprende dove era stata interrotta Page Fault
Che cosa succede se non ci sono frame liberi? Sostituzione di una pagina Si determina una pagina di memoria attualmemte non utilizzata e la si sposta sul disco Serve un algoritmo L algoritmo deve essere tale per cui venga minimizzato il numero di Page Fault futuri La stessa pagina potrebbe essere richiamata in memoria più di una volta Sostituzione di una pagina Di solito viene implementato nella routine di gestione del Page Fault per evitare affollamento iin memoria Si fa uso di un bit (dirty bit ) per marcare le pagine modificate, in maniera tale da scrivere solo quelle sul disco
Algoritmo di base. Si individua la locazione sul disco della pagina richiesta 2. Si individua un frame libero. Se esiste lo si usa 2. Se non esiste si usa un algoritmo di sostituzione delle pagine per selezionare un frame vittima e lo si trasferisce sul disco (liberando un posto) 3. Si legge la pagina nel frame libero (o liberato) aggiornando le tabelle di sistema 4. Viene fatto ripartire il processo Sostituzione di una pagina
Algoritmi per la sostituzione di pagine Cercano di minimizzare il numero di Page Fault Vengono valutati utilizzando una sequenza di riferimenti a pagine di memoria (stringa di riferimento) e contando il numero di Page Fault generati dal sistema Negli esempi che seguiranno useremo due stringhe di riferimento:, 2, 3, 4,, 2, 5,, 2, 3, 4, 5. 7, 0,, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2,, 2, 0,, 7, 0, Page Fault in funzione del numero di frame in memoria
Algoritmo First-In-First-Out (FIFO) Stringa di riferimento:, 2, 3, 4,, 2, 5,, 2, 3, 4, 5 Frame di memoria disponibili: 3 4 frame 2 3 4 2 5 3 4 3 hit 9 page fault 2 3 5 2 4 5 2 hit 0 page fault 4 3 Anomalia di Belady aumento il numero di frame, aumentano anche i Page Fault FIFO: Anomalia di Belady
FIFO: Sostituzione delle pagine Algoritmo ottimale Sostituisco le pagine che non SARANNO utilizzate per il periodo di tempo più lungo 4 frame, 2, 3, 4,, 2, 5,, 2, 3, 4, 5 2 3 4 6 page fault 4 5 Non implementabile (ovviamente) Si usa come termine di riferimento per valutare gli altri algoritmi
Algoritmo di sostituzione ottimale Algoritmo Least Recently Used (LRU) Stringa di riferimento:, 2, 3, 4,, 2, 5,, 2, 3, 4, 5 5 2 3 5 4 4 3 Viene implementato con un contatore Ogni pagina contiene un contatore; quando la pagina viene acceduta viene copiato il valore del clock di sistema nel contatore Quando devo sostituire una pagina seleziono quella con il contatore più vecchio
LRU: Sostituzione delle pagine Algoritmi per l approssimazione di LRU Con bit supplementare di riferimento Ad ogni pagina è associato un bit, inizialmente a 0 Quando la pagina viene referenziata tale bit è posto a La pagina vittima viene selezionata tra quelle con il bit a 0 A intervalli regolari vengono riazzerati tutti Seconda chance (orologio) Anche qui serve un bit di riferimento Le pagine sono disposte in una lista circolare Quando occorre selezionare una pagina vittima comincio una scansione lungo la lista. Se una pagina ha il bit di riferimento a lo pongo a zero e passo alla successiva (la pagina rimane in memoria) Altrimenti la seleziono per essere sostituita
Algoritmo Seconda Chance Perche orologio?
Thrashing Quando il numero di frame diventa troppo basso il ritmo dei Page Fault aumenta a dismisura; questo fa si che: La CPU utilizzi la maggior parte del suo tempo per rimpiazzare pagine Il sistema operativo pensa che ci siano MOLTE risorse disponibili (la CPU lavora POCO per i processi) Altri processi vengono ammessi nel sistema Sempre più pagine devono essere rimpiazzate Thrashing: il processore passa tutto il suo tempo trasferendo pagine dal disco alla memoria Thrashing Modello di località Un processo staziona su un certo insieme di pagine di memoria per un periodo (località) Durante la sua esecuzione un processo passa da una località all altra Le località potrebbero sovrapporsi parzialmente Perchè avviene il Trashing? La somma delle località in un dato momento è maggiore della dimensione della memoria
Working Set Indichiamo con una Finestra di Working Set (Un numero fissato di riferimenti a pagine di memoria) Indichiamo conwss i la dimensione del Working Set del processo P i (Il numero totale di pagine referenziate nel più recente) Se è troppo piccolo non riuscirà a ricoprire tutta l attuale località di P i Se è troppo largo ricoprirà più di una località Se tende ad infinito ricoprirà tutto il programma Indichiamo con D il numero totale di frame richiesti durante un intervallo di tempo dal sistema D = Σ WSS i Se D è più grande della memoria, allora si ha il fenomeno del Thrashing Devo decidere di sospendere (swappare) uno o più processi Working Set
Page-Fault Frequency Scheme Vengono attribuiti un certo numero di frame ad un processo Si stabiliscono dei limiti che identificano i valori accettabili per la frequenza di page-fault di un processo. Se il page-fault rate e inferiore al limite, gli togliamo unframe Se il page fault rate e superiore al limite, gli aggiungiamo un frame