Esercizio - Tempo di accesso effettivo con TLB e page fault (eserciziario, esercizi 32, 70 e 118)
In questa pagina 6
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, e slide delle lezioni).
- Esercizio 118. Sistema con tabella delle pagine in memoria centrale e TLB. Ogni riferimento alla memoria (anche alla tabella) richiede 200 ns; il reperimento nel TLB richiede 20 ns. Quale deve essere l'hit ratio del TLB per avere un tempo di accesso effettivo medio di 240 ns?
- Esercizio 32. Memoria virtuale paginata; CPU con ciclo di 1 s; accedere a una pagina diversa da quella corrente costa 1 s in più; pagine da 1000 parole; il dispositivo di paginazione è un tamburo che ruota a 3000 giri al minuto e trasferisce 1 milione di parole al secondo. Misure: l'1% delle istruzioni accede a una pagina diversa da quella corrente; di queste, l'80% accede a una pagina già in memoria; quando serve una pagina nuova, la pagina sostituita risulta modificata il 50% delle volte. Tempo medio effettivo di un'istruzione, con un solo processo e CPU inattiva durante i trasferimenti dal tamburo.
- Esercizio 70. Stringa di riferimenti
1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 3, 2, 7, 6, 3, 2, 1, 2, 3, 6; tempo di accesso effettivo con LRU e 5 frame. Un page fault senza salvataggio della pagina sostituita costa 80 ms, uno con salvataggio 140 ms; un accesso alla memoria 80 s; gli accessi alle pagine 1, 2, 3 sono sempre in scrittura. Inizialmente i 5 frame sono vuoti. - Slide. (a) Memoria 10 ns, hit ratio 80% e 99%: slowdown? (b) Accesso 200 ns, fault da 8 ms: massimo per un degrado del 10%.
Teoria: Memoria centrale - allocazione contigua, paginazione e segmentazioneUn programma deve stare in memoria centrale per girare; la MMU traduce a ogni accesso l'indirizzo logico (virtuale) in indirizzo fisico, sommando un registro di rilocazione e controllando il limite; con l'allocazione contigua (partizioni fisse o variabili, first/best/worst fit) si hanno frammentazione interna ed esterna e serve la compattazione; la paginazione divide memoria logica in pagine e memoria fisica in frame della stessa dimensione (potenza di 2), elimina la frammentazione esterna, traduce (p, d) con la tabella delle pagine (PTBR, PTLR) e riduce il costo dei due accessi con il TLB (EAT = h * t + (1 - h) * 2t); le tabelle grandi si dividono in gerarchiche, hash o invertite; lo swapping sposta intere pagine o processi su disco; la segmentazione usa blocchi di lunghezza variabile con coppia (base, limite), eventualmente paginati; Intel IA-32 usa segmentazione con paginazione a due livelli (10+10+12 bit) e IA-64 quattro livelli su 48 bit.Memoria centrale - allocazione contigua, paginazione e segmentazione →, Memoria virtuale - paginazione su richiesta e sostituzione delle pagineLa memoria virtuale separa la memoria logica da quella fisica: basta che alcune pagine siano in RAM; con la paginazione su richiesta (demand paging) una pagina si carica solo al primo riferimento, e un riferimento a una pagina non residente (bit di validità = i) genera un page fault gestito dal sistema operativo in sei passi; EAT = (1 - p) * accesso + p * servizio del fault, con p minuscolo; copy-on-write rende economica la fork; se non ci sono frame liberi si sceglie una vittima con FIFO (anomalia di Belady), OPT (ottimo, irrealizzabile), LRU (algoritmo a stack), second chance (bit di riferimento, orologio) o la versione con bit di modifica; i frame si assegnano in modo uguale o proporzionale, con sostituzione globale o locale; se un processo non ha abbastanza frame va in thrashing; il modello del working set e la frequenza dei page fault lo evitano; considerazioni su prepaging, dimensione della pagina, TLB reach e struttura dei programmi; memoria del kernel con buddy system e slab.Memoria virtuale - paginazione su richiesta e sostituzione delle pagine →.
Le formule
- Con il TLB (tempo del TLB , accesso alla memoria , hit ratio ): hit: ; miss: (tabella) (dato) . . Se si trascura : .
- Con i page fault: ; in generale, la media pesata dei costi di ogni caso, ognuno con la sua frequenza.
Esercizio 118
Con , ns:
Verifica: ns.
Esercizio 32
Tempo di un trasferimento dal tamburo. Il tamburo gira a 3000 giri/min, cioè giri/s: una rotazione completa dura ms e la latenza media è mezza rotazione, ms s. Trasferire 1000 parole (una pagina) a parole/s costa ms s. Quindi leggere una pagina costa s; scrivere una pagina costa lo stesso.
Casi e frequenze (su 1 istruzione):
| caso | probabilità | costo |
|---|---|---|
| stessa pagina | s | |
| altra pagina, già in memoria | s (1 di ciclo + 1 in più) | |
| altra pagina non in memoria (page fault) | lettura della pagina nuova: s | |
| fault con vittima modificata | scrittura della vittima: altri s |
Ogni fault costa una lettura (probabilità ), e in più una scrittura nella metà dei casi (). Per essere precisi si dovrebbe aggiungere a ogni fault anche il microsecondo del ciclo (variazione di s: trascurabile); il risultato è s.
Esercizio 70
Numero di fault e di hit con LRU, 5 frame. Si segnano i fault (F):
| rif. | 1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 3 | 2 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| esito | F | F | F | F | hit | hit | F | F | hit | hit | F | hit | F | hit | hit | hit | hit | hit | hit | hit |
| vittima | 3 | 4 | 5 |
- I primi 4 fault e il quinto (pagina 5) riempiono i frame vuoti: nessuna vittima.
- (pagina 6): la meno recente è la 3 (ultimo uso a ). La 3 è stata scritta (le pagine 1, 2, 3 sono sempre in scrittura): va salvata su disco prima di essere sostituita: fault con salvataggio.
- (pagina 3): la meno recente è la 4 (mai scritta): sostituzione senza salvataggio.
- (pagina 7): la meno recente è la 5 (mai scritta): senza salvataggio.
Totale: 8 fault, di cui 1 con salvataggio e 7 senza; gli altri riferimenti sono hit, costano l'accesso diretto di 80 s.
(Il tempo effettivo è dominato dai fault: le hit pesano meno di 1 ms su 701 ms.)
Esempi dalle slide
(a) Slowdown del TLB. ns: con : ns, cioè il 20% in più. Con : ns, solo l'1% in più.
(b) Page fault. Accesso 200 ns, fault 8 ms ns: . Per un degrado minore del 10%: , quindi : meno di un fault ogni 400 000 accessi. Con il tempo è s, 40 volte maggiore.
Errori tipici
- Dimenticare che un TLB miss costa due accessi alla memoria (tabella più dato).
- Nell'esercizio 32, sommare per ogni fault la lettura e la scrittura anche quando la vittima non è modificata: la scrittura si paga solo nel 50% dei fault.
- Usare come probabilità di fault invece di .
- Nell'esercizio 70, non fare il salvataggio quando la vittima è una pagina scritta (la 3 alla sostituzione a ).
- Convertire male le unità (3000 giri/min latenza media 10 ms, non 20 ms).
Versione ripasso
Formule. TLB: . Fault: , o media pesata dei casi.
118. .
32. Latenza ms, trasferimento ms pagina s. Casi: 0,99 1; 0,008 2; fault 0,002 11 000; vittima modificata 0,001 11 000 s.
70. LRU con 5 frame: 8 fault (5 su frame vuoti, poi 6 sostituisce la 3 con salvataggio, 3 sostituisce la 4, 7 sostituisce la 5), 12 hit. ms.
Slide. ns (+20%); ns (+1%). per degrado con 200 ns e 8 ms.
Passaggi. 118: . 32: pagina s; probabilità: 0,99 (1 s), 0,008 (2 s), 0,002 (fault: lettura 11 000), 0,001 (vittima modificata: scrittura 11 000) s. 70: LRU 5 frame, fault sulle pagine 1, 2, 3, 4, 5 (frame vuoti), poi 6 (toglie la 3, dirty, 140 ms), 3 (toglie la 4), 7 (toglie la 5): 7 fault a 80 ms, 1 a 140 ms, 12 hit da 80 s: ms. Slide: ns; .
Errori tipici: TLB miss con un solo accesso; scrittura della vittima sempre pagata; al posto di ; vittima dirty non salvata; latenza di un giro intero.