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