Memoria virtuale Memoria virtuale separazione della memoria logica

  • Slides: 20
Download presentation
Memoria virtuale • Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica.

Memoria virtuale • Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. – Solo alcune parti di un programma devono trovarsi in memoria per l’esecuzione. – Lo spazio logico degli indirizzi può quindi essere più grande dello spazio fisico. – E’ necessario permettere lo spostamento (swapping) delle pagine. • La memoria virtuale può venir implementata per mezzo di: – Paginazione su richiesta – Segmentazione su richiesta Sistemi operativi 9. 1

Paginazione su richiesta • Si porta una pagina in memoria solo quando è richiesta.

Paginazione su richiesta • Si porta una pagina in memoria solo quando è richiesta. – Viene richiesto meno I/O – Viene impiegata meno memoria – Si ha una risposta più veloce – Si possono gestire più utenti • Una pagina è richiesta si fa un riferimento alla pagina – riferimento non valido abort – pagina non in memoria si porta in memoria Sistemi operativi 9. 2

Bit di validità • SI associa un bit di validità a ciascun elemento della

Bit di validità • SI associa un bit di validità a ciascun elemento della tabella delle pagine (1 in memoria, 0 non in memoria). • • Inizialmente il bit di validità viene posto a 0 per tutte le pagine. Esempio di una configurazione della tabella delle pagine. Frame # Bit di validità 1 1 0 0 0 • Tabella pagine Durante la traduzione dell’indirizzo, se il bit di validità vale 0 si ha un page fault. Sistemi operativi 9. 3

Page Fault • Se non ci sono mai stati riferimenti ad una pagina, il

Page Fault • Se non ci sono mai stati riferimenti ad una pagina, il primo riferimento causa un trap del SO page fault • Il SO consulta un’altra tabella per decidere: – Riferimento non valido abort. – Semplicemente non è in memoria. • • Seleziona un frame vuoto. Sposta la pagina nel frame. Aggiorna le tabelle (bit di validità = 1). Viene riavviata l’istruzione che era stata interrotta. Sistemi operativi 9. 4

Sostituzione delle pagine • Sostituzione della pagina – si trova una pagina in memoria

Sostituzione delle pagine • Sostituzione della pagina – si trova una pagina in memoria che non sia realmente utilizzata, e si sposta sul disco. – algoritmo – prestazioni: è richiesto un algoritmo che abbia il minimo numero di page fault. • • Alcune pagine possono essere portate in memoria più volte. • Effective Access Time (EAT) Page Fault Rate 0 p 1. 0 – se p = 0 non si hanno page fault – se p = 1, ciascun riferimento è un fault EAT = (1 – p) x t[accesso alla memoria] + p x t[page fault] + t[swap page out] + t[swap page in]+ restart overhead Sistemi operativi 9. 5

Sostituzione delle pagine • La sovra-allocazione della memoria si ha quando è richiesta più

Sostituzione delle pagine • La sovra-allocazione della memoria si ha quando è richiesta più memoria di quella effettivamente disponibile. • SI previene la sovra-allocazione delle pagine modificando le routine di servizio, includendo la sostituzione delle pagine (oppure terminando i processi). • Si impiega un bit di modifica (dirty) per ridurre il sovraccarico dei trasferimenti di pagine – solo le pagine modificate vengono scritte sul disco. • Il rimpiazzamento delle pagine completa la separazione fra la memoria logica e la memoria fisica – una grande memoria virtuale può essere fornita ad un sistema con poca memoria fisica. • • Si richiede il più basso rate di page-fault possibile. Si valutano gli algoritmi eseguendoli su una particolare stringa di riferimenti a memoria (reference string) e contando il numero di page fault su tale stringa. Sistemi operativi 9. 6

Algoritmo First-In-First-Out (FIFO) • • Stringa di riferimenti: 1, 2, 3, 4, 1, 2,

Algoritmo First-In-First-Out (FIFO) • • Stringa di riferimenti: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 frame (3 pagine possono trovarsi in memoria in un dato momento per ciascun processo) 1 1 4 5 4 frame 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 Algoritmo FIFO – anomalia di Belady: più frame più page fault Sistemi operativi 9. 7

Algoritmo ottimo • Rimpiazzare la pagina che non verrà usata per il più lungo

Algoritmo ottimo • Rimpiazzare la pagina che non verrà usata per il più lungo periodo di tempo. • Esempio con 4 frame: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1 4 2 6 page fault 3 4 • • 5 Come si può conoscere questa pagina? Viene impiegato per misurare quanto bene funziona un determinato algoritmo. Sistemi operativi 9. 8

Algoritmo Least Recently Used (LRU) • • • Stringa di riferimenti: 1, 2, 3,

Algoritmo Least Recently Used (LRU) • • • Stringa di riferimenti: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1 Implementazione contatore – Ciascuna pagina ha un contatore; ogni volta che si fa riferimento alla pagina si copia l’orologio nel contatore. – Quando si deve rimuovere una pagina, si analizzano i contatori per scegliere quale pagina cambiare. 2 Implementazione con stack – si tiene uno stack di numeri di pagina in forma di lista doppiamente concatenata: – Pagina referenziata: T Si sposta in cima allo stack T è necessario al più aggiornare 6 puntatori – Non è necessario fare ricerche per la scelta. Sistemi operativi 9. 9 5 3 5 4 3 4

Algoritmi di approssimazione di LRU • Bit di riferimento – A ciascuna pagina si

Algoritmi di approssimazione di LRU • Bit di riferimento – A ciascuna pagina si associa un bit, inizialmente = 0 – Quando si fa riferimento alla pagina si pone il bit a 1. – Si rimpiazza la pagina il cui bit=0 (se esiste). Tuttavia non si conosce l’ordine. • Seconda chance – E’ necessario un bit di riferimento. – Clock replacement. – Se la pagina da rimpiazzare (in ordine di clock) ha il bit di riferimento = 1. allora: T Si pone il bit di riferimento a 0. T Si lascia la pagina in memoria. T Si rimpiazza la pagina successiva (in ordine di clock), soggetta alle stesse regole. Sistemi operativi 9. 10

Algoritmi conteggio • Si tiene un contatore del numero di riferimenti che sono stati

Algoritmi conteggio • Si tiene un contatore del numero di riferimenti che sono stati fatti a ciascuna pagina. • Algoritmo LFU (Least Frequently Used): si rimpiazza la pagina col valore più basso del contatore. • Algoritmo MFU (Most Frequently Used): è basato sull’assunzione che la pagina col valore più basso del contatore è stata spostata recentemente in memoria e quindi ha sempre bisogno di essere impiegata. • L’implementazione di questi algoritmi è molto costosa. Sistemi operativi 9. 11

Allocazione dei frame • • Ciascun processo richiede un numero minimo di pagine. •

Allocazione dei frame • • Ciascun processo richiede un numero minimo di pagine. • Si hanno due schemi principali di allocazione. – Allocazione fissa – Allocazione con priorità Esempio: IBM 370 – l’istruzione SS MOVE manipola 6 pagine: – l’istruzione è di 6 byte, quindi può toccare 2 pagine. – 2 pagine per gestire from. – 2 pagine per gestire to. Sistemi operativi 9. 12

Allocazione fissa e con priorità • Stessa allocazione per ogni processo – Ad esempio,

Allocazione fissa e con priorità • Stessa allocazione per ogni processo – Ad esempio, se si hanno 100 frame e 5 processi, si assegnano 20 pagine a ciascuno. • Allocazione proporzionale – Si alloca sulla base della dimensione del processo. • SI impiega uno schema di allocazione proporzionale impiegando delle priorità piuttosto che la dimensione. • Se il processo Pi genera un page fault, – si seleziona per il rimpiazzamento uno dei suoi frame. – si seleziona per il rimpiazzamento un frame di un processo con numero di priorità più basso. Sistemi operativi 9. 13

Allocazione globale o locale • Rimpiazzamento globale – il processo seleziona un frame da

Allocazione globale o locale • Rimpiazzamento globale – il processo seleziona un frame da rimpiazzare dall’insieme di tutti i frame; un processo può prendere un frame ad un altro processo. • Rimpiazzamento locale – ciascun processo seleziona i frame solo dal suo insieme di frame allocati. Sistemi operativi 9. 14

Thrashing • Se un processo non ha abbastanza pagine, il rate di page-fault è

Thrashing • Se un processo non ha abbastanza pagine, il rate di page-fault è molto alto. Questo porta a: – basso impiego della CPU. – il sistema operativo crede di aver bisogno di aumentare il grado di multiprogrammazione. – si aggiunge un altro processo al sistema! • Thrashing un processo è in attesa spostando pagine dal disco alla memoria e viceversa. • Perché la paginazione funziona? Modello di località – Il processo passa da una località ad un’altra. – Le località possono essere sovrapposte. • Perché avviene il thrashing? dimensioni delle località > dimensione totale della memoria Sistemi operativi 9. 15

Modello del Working-Set • finestra di working-set un numero fisso di riferimenti a pagine

Modello del Working-Set • finestra di working-set un numero fisso di riferimenti a pagine esempio: 10. 000 istruzioni. • WSSi (working set del Processo Pi) = numero totale di pagine referenziate nel più recente (varia col tempo): – se è troppo piccolo non comprende tutta la località. – se è troppo grande comprenderà più località. – se = comprende l’intero programma. • • • D = WSSi numero totale di frame richiesti se D > m (n. totale dei frame) Thrashing Politica: se D > m, allora si sospende un processo. Sistemi operativi 9. 16

Tener traccia del working-set • Problema: la finestra del working-set è una finestra in

Tener traccia del working-set • Problema: la finestra del working-set è una finestra in movimento con riferimenti che entrano ed escono dal working-set. • • Si approssima con un interrupt del timer e un bit di riferimento • • Questo approccio non è completamente accurato. Esempio: = 10. 000 – Il timer interrompe ogni 5000 unità di tempo. – Si tengono in memoria 2 bit per ogni pagina. – Quando si ha un interrupt del timer, si copiano i valori di tutti i bit di riferimento e si settano a 0. – Se uno dei bit in memoria è 1 pagina nel working-set. Miglioramento: 10 bit e interrupt ogni 1000 unità di tempo. Sistemi operativi 9. 17

Schema della frequenza dei page-fault • Si stabilisce un rate di page fault “accettabile”.

Schema della frequenza dei page-fault • Si stabilisce un rate di page fault “accettabile”. – Se il rate corrente è troppo basso, il processo perde dei frame. – Se il rate corrente è troppo alto, il processo guadagna dei frame. Sistemi operativi 9. 18

Altre considerazioni • Prepaginazione: Si portano in memoria tutte le pagine richieste in una

Altre considerazioni • Prepaginazione: Si portano in memoria tutte le pagine richieste in una volta sola. Ad esempio si può memorizzare il working-set al momento della sospensione per I/O e poi riprendere le pagine che appartengono al workingset. • • Criteri per la determinazione della dimensione della pagina – frammentazione – dimensione della tabella delle pagine – sovraccarico (overhead) di I/O – località Struttura dei programmi – Array A[1024, 1024] of integer – Ciascuna riga viene memorizzata in una pagina – Memoria con un frame – Prog. 1 for j : = 1 to 1024 do Prog. 2 for i : = 1 to 1024 do for j : = 1 to 1024 do A[i, j] : = 0; 1024 x 1024 page fault Sistemi operativi 9. 19

Segmentazione su richiesta • Viene impiegata quando non si ha hardware sufficiente per implementare

Segmentazione su richiesta • Viene impiegata quando non si ha hardware sufficiente per implementare la paginazione su richiesta. • OS/2 alloca la memoria in segmenti, di cui si tiene traccia attraverso descrittori di segmenti • Un descrittore di segmento contiene un bit di validità per indicare se il segmento è correntemente in memoria. – Se il segmento si trova in memoria principale, allora si prosegue l’accesso, – Se non è in memoria si ha un segmentation fault. Sistemi operativi 9. 20