Capitolo 4
Gestione della Memoria
4.1 Introduzione alla gestione della memoria
4.2 Swapping
4.3 Memoria virtuale
4.4 Implementazione
4.5 Algoritmi di sostituzione
4.6 Criteri di progetto per la paginazione
4.7 Case study: Unix
4.8 Case study: Windows 2000
1
Algoritmi di Sostituzione
• Il page fault forza la scelta su quale pagina deve
essere rimossa
– Libera memoria per la pagina da caricare
• Pagine modificate devono essere salvate
– Quelle non modificate vengono semplicemente
sovrascritte
• Deve evitare di selezionare una pagina riferita
spesso
– Potrebbe essere necessario ricaricarla in breve tempo
2
Algoritmo di Sostituzione Ottimo
• Sostituisce la pagina che sarà riferita nell’istante
più lontano nel tempo
– Ottimo ma non realizzabile
• In alternativa:
– Si stima l’ordine di caricamento delle pagine in
esecuzioni precedenti del processo
– Neanche questa soluzione è applicabile in pratica
– Tuttavia può essere usata per valutare le prestazioni di
algoritmi utilizzabili
3
Least Recently Used (LRU)
• Assume che le pagine usate di recente siano riferite di
nuovo in breve tempo (località temporale)
– Scarica le pagine inutilizzate da più tempo
• Implementazione diretta: mantiene una lista di pagine
– Le pagine usate più di recente in cima
– Aggiorna la lista ad ogni riferimento della memoria!!
• Impl. Approssimata: mantiene un contatore per ogni
descrittore della tabella delle pagine
– L’hw incrementa il un contatore centrale C ad ogni tick
– Se accedo la pagina p , C viene copiato nel descrittore
corrispondente
– Scarica la pagina fisica con il più piccolo valore nel campo
contatore
4
Algoritmo di Sostituzione “Second Chance”
Pagina caricata
per prima
Tempi di caricamento
• Operazioni di un algoritmo “second chance”
a) Pagine disposte in ordine FIFO
b) Lista delle pagine se il fault di pagina avviene all’istante 20,
A ha il bit R settato
c) A viene trattata come una pagina arrivata all’istante 20, R
viene posto a 0
5
Algoritmo di Sostituzione “Clock”
Quando avviene un fault di pagina, la
pagina indicata dal puntatore viene
analizzata. L’azione dipende dal bit R:
•R=0: elimina la pagina
•R=1: resetta R e avanza il puntatore
6
Algoritmo di Sostituzione “Working Set” (1)
• Working set (idea di base)
– insieme di pagine necessarie ad un processo P in una fase
della propria elaborazione
• es. due array globali A,B (dati), più istruzioni di copia (testo)
• Paginazione su domanda (a richiesta)
– P passa in esecuzione senza alcuna pagina in memoria
– le pagine vengono caricate quando avviene un page fault
– lento finché non è stato caricato il working set
• Pre-paginazione (prepaging)
– il sistema tiene traccia del working set
– l’ultimo working set di P viene caricato in memoria
prima di riavviare il processo
7
Algoritmo di Sostituzione “Working Set” (2)
k
• Il “working set” al tempo t è l’insieme di pagine
riferite negli ultimi k accessi in memoria
• w(k,t) è la dimensione del “working set” al tempo t
8
Algoritmo di Sostituzione “Working Set”(3)
9
Algoritmo di Sostituzione “Working Set”(3.1)
• Ad ogni tick i bit R vengono azzerati
• Ad ogni page fault si scandisce TP
– se R=1, tempo virtuale corrente viene copiato nel
descrittore ( > > tick)
– se R=0 la pagina viene rimossa solo se non
appartiene a WS (age-anzianità >)
– se tutte le pagine sono in WS si elimina quella
riferita da più tempo con R=0 (se c’è)
– altrimenti una con R=1 (possibilmente non dirty)
– tutta la TP viene comunque scandita ed aggiornata
10
L’Algoritmo di Sostituzione “WSClock”
Bit R
Tempo
ultimo utilizzo
11
L’Algoritmo di Sostituzione “WSClock” (2)
• Mantiene la lista circolare di pagine di P caricate
in memoria
– aggiornata ad ogni caricamento
• Ad ogni fault si esamina la pagina puntata dalla
lancetta
– se R=1 viene resettato
– se la pagina non è in WS ma è dirty viene richiesta la
scrittura e si continua la ricerca
– se non è dirty viene selezionata come vittima (fine)
– si selezionano al più k scritture
12
L’Algoritmo di Sostituzione “WSClock” (3)
13
Criteri di progetto per la paginazione
Politiche di Allocazione Locali VS Globali (1)
• Configurazione originale
• Sostituzione con politica locale
• Sostituzione con politica globale
14
Politiche di Allocazione Locali VS Globali (2)
In caso di politiche di allocazione locali è necessario
determinare il numero di pagine fisiche da
assegnare ad ogni processo
• Tramite monitoraggio della dimensione del
working set
– analizzando l’istante dell’ultimo riferimento alle pagine
• Tramite algoritmi di allocazione delle pagine
– Allocazione iniziale in funzione della dimensione del
processo
– Allocazione successiva tramite algoritmo PFF (Page
Fault Frequency)
15
Politiche di Allocazione Locali VS Globali (3)
Tasso di page fault in funzione del numero di pagine
fisiche assegnate: possibile strategia per PFF
16
Controllo del carico
• A prescindere dalla bontà dello schema adottato, il sistema
può comunque andare in thrashing (causare un page fault
ogni poche istruzioni)
• Accade quando l’algoritmo PFF indica che
– Alcuni processi necessitano di più memoria
– E che nessun processo necessita di meno memoria
• Soluzione (scheduling di secondo livello)
Ridurre il numero di processi che competono per la
memoria
– Fare lo swap di qualche processo su disco
– Ridurre il grado di multiprogrammazione
17
Riassunto degli Algoritmi di Sostituzione
Algoritmo
Commento
Ottimo
Non implementabile, si usa come benchmark
LRU (Least Recently Used)
Eccellente ma difficile da implementare
Second Chance
Realistico, piu’ costoso del clock
Clock
Realistico
Working Set
Costoso da implementare
WSClock
Buono ed efficiente
18
Dimensione delle Pagine (1)
Pagine piccole
• Vantaggi
– Riducono la frammentazione interna
– Si adattano meglio a varie strutture dati e sezioni di
codice
– Limitano l’ampiezza dello spazio di indirizzamento
inutilizzato caricate in memoria
• Svantaggi
– I programmi necessitano di parecchie pagine,
tabelle delle pagine più grandi
19
Dimensione delle Pagine (2)
• Spreco di memoria dovuto alla tabella delle pagine e
alla frammentazione interna
Spazio nella tabella
delle pagine
s e p
overhead 

p 2
• Dove
– s = dimensione media di un processo (in bytes)
– p = dimensione della pagina (in bytes)
– e = descrittore di pagina (in bytes)
Frammentazione
interna
Ottimizzata quando
p  2se
20
Cleaning Policy
• Necessità di un processo in background (demone
di paginazione -- paging daemon)
– Analizza periodicamente lo stato della memoria
• Quando troppe poche pagine fisiche sono libere
– Seleziona una pagina da scaricare usando un
algoritmo di sostituzione
21
Scarica

Gestione della memoria: algoritmi di sostituzione