Università di Roma Tor Vergata
Corso di Laurea triennale in Informatica
Sistemi operativi e reti
A.A. 2014-15
Pietro Frasca
Lezione 13
Giovedì 20-11-2014
Paginazione su richiesta
• Con la tecnica della paginazione un processo deve essere
caricato completamente in memoria per essere eseguito.
• Come già descritto per la segmentazione su richiesta, anche
per la paginazione, ricorrendo ad architetture di
microprocessori più complesse, si può fare in modo che un
processo possa essere eseguito caricando in memoria solo
una parte del suo spazio virtuale.
• Nel campo controllo dell’elemento della tabella delle
pagine è inserito un bit di presenza P che indica se la pagina
virtuale relativa è presente o meno in memoria.
Analogamente sono usati il bit d’uso U e di modifica M.
Appunti di Sistemi operativi
Pietro Frasca
2
• L’elemento della tabella delle pagine dipende
dall’architettura hardware. Tipicamente ha il formato come
in figura:
pagina fisica
controllo
Indice della pagina fisica
se P=1
R
W
P
U
altre info
M
indirizzo cluster
se P=0
Elemento della tabella delle pagine
• Generalmente, il campo altre info non è presente nella
tabella delle pagine ma è memorizzato in tabelle esterne,
associate al descrittore del processo.
• Il disco di sistema è formattato in blocchi logici (cluster) di
dimensione pari alla dimensione delle pagine.
• Quando un processo è creato, alcune pagine del suo spazio
virtuale sono copiate in altrettanti cluster della swap-area
(o del file di paging) e sono caricate in memoria solo poche
pagine (pre-paging) o anche nessuna.
Appunti di Sistemi operativi
Pietro Frasca
3
• La tabella delle pagine è creata nel modo seguente:
– ponendo a 1 i bit P di presenza delle pagine caricate e a 0
quelle delle pagine non caricate;
– Inserendo nel campo pagina fisica l’indice della pagina fisica
se P=1 o nel campo altre info l’indirizzo della pagina su swaparea (indirizzo del cluster) delle pagine non caricate (P=0).
• Quando la MMU indirizza una pagina che non è caricata in
memoria (bit P=0) essa genera un segnale di interruzione
di page-fault (errore di pagina) che attiva una funzione
del gestore della memoria che ha il compito di ricercare
nella tabella delle pagine fisiche, una pagina libera in cui
caricare la pagina virtuale richiesta.
• Se non è disponibile memoria libera, è necessario liberare
la memoria salvando sull’area swap un certo numero di
pagine, appartenenti o meno al processo in esecuzione.
Questa operazione prende il nome di rimpiazzamento delle
pagine.
Appunti di Sistemi operativi
Pietro Frasca
4
Swap-area
(disco)
MMU
pv
MMU
1
off
pv
I
4
I
P=0
off
pv
5
Tabella pagine P
pv
8
Tabella pagine P
Memoria fisica
Page-fault
2
pv
pf
P=0
P=1
6
pf
Tabella pagine fisiche
Tabella pagine fisiche
3
pf
pf
libera
Appunti di Sistemi operativi
Gestione
di un page-fault
Pietro Frasca
pv
pid P
7
5
Rimpiazzamento delle pagine
•
Per effettuare il rimpiazzamento di una pagina fisica di
indice pf il kernel esegue i seguenti passi:
1.
2.
3.
4.
5.
•
•
mediante un algoritmo di rimpiazzamento, ricerca nella
tabella delle pagine fisiche la pf più idonea da rimpiazzare;
trovata la pagina pf, recupera l’indice pv della pagina
virtuale che vi è allocata e il processo Pk cui essa
appartiene; seleziona l’elemento di indice pv della tabella
delle pagine di Pk e ottiene l’indirizzo I del cluster su swaparea;
salva la pagina fisica pf contenente la pagina virtuale pv di
Pk su swap-area all’indirizzo I;
aggiorna i valori dell’elemento pv della tabella delle pagine
del processo Pk ponendo a 0 (reset) il bit di presenza P;
aggiorna la tabella delle pagine fisiche rendendo pf libera.
La copia su disco della pagina scelta non avviene se il bit
di modifica è M=0.
Al termine del rimpiazzamento il processo torna in
esecuzione ed esegue di nuovo l’istruzione che ha
generato il page-fault.
Appunti di Sistemi operativi
Pietro Frasca
6
Pk: processo a cui si
revoca la pagina pf
Tabella pagine di Pk
Swap-area
2
Tabella pagine di Pk
I
pv
pf
I
pv
pv
P=0
P=1
I
P=0
4
Memoria fisica
3
Tabella pagine Fisiche
1
pf
pv
Tabella pagine Fisiche
pf
pf
Pk
Prima del rimpiazzamento
libera
5
Dopo il rimpiazzamento
Appunti di Sistemi operativi
Rimpiazzamento
delle pagine
Pietro Frasca
7
• L’algoritmo di rimpiazzamento, deve escludere dalla
selezione le pagine fisiche che sono coinvolte in un
trasferimento dati. Ad esempio se una pagina fisica pf
contiene la pagina virtuale pv di un processo P che ha
attivato un trasferimento di dati da una periferica a un suo
buffer contenuto nella propria pagina virtuale pv, tramite
un canale DMA, pf non deve essere scelta.
• Infatti, anche se il processo P è bloccato, il DMA trasferisce
dati nel buffer e se pf viene sostituita, il DMA scriverà dati
in una pagina virtuale diversa.
• Per questo motivo l’elemento della tabella delle pagine
fisiche contiene anche un campo di lock che se posto ad
1 significa che la corrispondente pagina fisica deve essere
ignorata dall’algoritmo di rimpiazzamento. Il blocco di una
pagina spesso è chiamato pinning (appuntare).
• Un’altra soluzione è di gestire tutte le operazioni di I/O nei
buffer del kernel e successivamente copiare il dati nelle
pagine del processo utente.
Appunti di Sistemi operativi
Pietro Frasca
8
• I page-fault riducono le prestazioni del sistema. E’ quindi
necessario minimizzare il numero di page-fault che un
processo può generare durante la sua esecuzione.
• Il numero di page-fault dipende da come è strutturato il
programma che il processo esegue. Tanto più il programma
è ben strutturato, tanto minore sarà il numero di page-fault
che genererà.
• Quando ci sono molti processi il numero di page-fault
aumenta notevolmente. Diventa fondamentale la scelta
dell’algoritmo di rimpiazzamento per evitare il fenomeno
del trashing che consiste nell’attività, da parte della CPU, a
trasferire continuamente pagine tra la memoria fisica e la
swap-area, riducendo fortemente l’efficienza del sistema.
Appunti di Sistemi operativi
Pietro Frasca
9
Algoritmi di rimpiazzamento delle pagine
• Un algoritmo di rimpiazzamento ottimo dovrebbe prevedere
quali pagine saranno referenziate nel futuro. Abbiamo già
incontrato un problema analogo discutendo l’algoritmo SJF
nella schedulazione dei processi.
• Gli algoritmi reali, per predire il futuro, si basano sulle
informazioni relative agli accessi effettuati nell’immediato
passato.
• Infatti, a partire da un generico istante e per un certo
intervallo di tempo, i processi generano indirizzi che sono
spesso contenuti all’interno di un ristretto numero di pagine
detto working set (insieme di lavoro).
• Il working set varia nel tempo, ma gradualmente. Le
chiamate di funzioni provocano una variazione di working
set.
• L’algoritmo di rimpiazzamento più semplice è il FIFO che
sceglie come pagina da rimpiazzare quella che risiede da
più tempo in memoria. Tuttavia è poco efficiente.
Appunti di Sistemi operativi
Pietro Frasca
10
• Un algoritmo molto più complesso, ma molto più efficiente
in termini di page-fault, è l’LRU (Least recently Used)
che sceglie come pagina da rimpiazzare quella meno
recentemente utilizzata indipendentemente da quando è
stata caricata.
• E’ stato sperimentato che LRU è l’algoritmo che fornisce le
migliori prestazioni. Tuttavia la sua realizzazione non è
conveniente in quanto richiede un complesso supporto
hardware e l’implementazione software produce un
overhead troppo elevato.
• Molti algoritmi sono approssimazioni dell’LRU.
• Uno di questi è l’algoritmo second-chance (seconda
scelta) chiamato anche clock algorithm.
Appunti di Sistemi operativi
Pietro Frasca
11
Algoritmo seconda chance
• Per consentire al gestore della memoria di fare statistiche
sull’uso delle pagine si utilizzano i bit U (uso) e M
(modifica) associati a ciascuna pagina. Questi due bit
devono essere aggiornati ogni volta che una pagina viene
referenziata, è quindi fondamentale che siano modificati via
hardware.
• All’avvio di un processo, i due bit U e M di ogni pagina sono
resettati (posti a 0).
• Periodicamente, ad esempio ogni 20 ms, all’interruzione del
clock, i bit U sono resettati.
• Le pagine sono distinte in due classi: quelle con il bit U=1
(le più recentemente usate) e quelle con il bit U=0 (le
meno recentemente usate). Si sceglie una pagina con
politica FIFO, dapprima tra quelle con il bit U=0, se ci sono.
Appunti di Sistemi operativi
Pietro Frasca
12
• La tabella delle pagine fisiche è gestita come un array
circolare (round robin). Viene tenuta aggiornata una
variabile di sistema vittima, contenente l’indice della
pagina fisica successiva a quella che è stata rimpiazzata per
ultima.
• Quando si verifica un page-fault la verifica inizia con la
pagina il cui indice è contenuto nella variabile vittima. Se
tale pagina ha il bit U=0 è scelta per il rimpiazzamento,
altrimenti il suo bit U è resettato e si prosegue fino ad
incontrare ad una pagina che ha il bit U=0.
• Nella figura è mostrato il funzionamento dell’algoritmo
disegnando la tabella delle pagine fisiche in forma circolare
e mettendo in evidenza per ogni pagina solo il bit d’uso U.
Appunti di Sistemi operativi
Pietro Frasca
13
tabella delle pagine fisiche.
Sono visualizzati solo i bit d’uso U
Pagina 0
Pagina 7
0
1
Pagina 0
Pagina 1
Pagina 7
1
1
0
Pagina 1
0
Pagina 2
Pagina 6
Pagina 2
0
1
0
0
Pagina 5
1
Pagina 4
vittima
Pagina 6
Pagina 3
Pagina 5
1
1
0
Pagina 3
Pagina 4
0
0
fine
inizio
Algoritmo second-chance
Appunti di Sistemi operativi
Pietro Frasca
14
• Per ridurre i trasferimenti tra memoria e disco, e quindi per
migliorare le prestazioni dell’algoritmo, per la classificazione
delle pagine si considera anche il bit di modifica M. In tal
modo le classi diventano quindi 4, relativamente alle
combinazione dei bit U-M:
classe0:
classe1:
classe2:
classe3:
0-0
0-1
1-0
1-1
non referenziata – non modificata
non referenziata - modificata
referenziata – non modificata
referenziata - modificata
• Rispetto alla scelta basata sul solo bit U si privilegiano le
pagine con il bit di modifica M=0 in quanto non modificate
e quindi non è necessario riscriverle sul disco.
• La classe1, contiene pagine che sono state referenziate,
M=1 ma che hanno il bit U=0 per via del reset eseguito
all’interruzione del clock.
Appunti di Sistemi operativi
Pietro Frasca
15
• Sono molti gli algoritmi realizzati per il rimpiazzamento.
• Ogni tipo di algoritmo ha molte varianti in base ai criteri di
scelta delle pagine da rimpiazzare. Ad esempio, al
momento del page-fault, si potrebbe scegliere di revocare
una pagina fisica dal processo che ha generato il page-fault
(tecnica del rimpiazzamento locale) oppure scegliere la
pagina revocandola a qualsiasi processo (tecnica del
rimpiazzamento globale). Il rimpiazzamento globale
consente una scelta più conveniente, in quanto viene fatta
su un numero maggiore di pagine.
• Molti sistemi, tra cui UNIX, non consentono di saturare
completamente la memoria ma conservano un certo
numero di pagine fisiche di riserva. In tal modo la gestione
del page-fault avviene più velocemente. D’altra parte però
il paginatore, quando verifica che la memoria sta per
esaurirsi, deve salvare un numero di pagine in modo da
renderle di nuovo libere.
Appunti di Sistemi operativi
Pietro Frasca
16
• Per minimizzare il numero di page-fault, molti paginatori
tengono traccia del working set di ciascun processo, in
modo tale da caricarlo in memoria prima che il processo
riprenda l’esecuzione. Questa tecnica è detta working set
model.
Appunti di Sistemi operativi
Pietro Frasca
17