convenzioni ed esercizi
CONVENZIONI
convenzioni per la simulazione della memoria virtuale
obiettivo: rappresentare il contenuto delle varie strutture dati coinvolte,
compresa la memoria fisica e il TLB, dopo l’esecuzione di una serie di eventi
strutture dati SW rappresentate
• mappa di memoria del processo
• Tabella delle Pagine del processo
• memoria fisica (solo quella usata per i processi in modo U)
strutture dati HW rappresentate
• contenuto dei registri PC e SP
• TLB (Translation Look‐aside Buffer)
esempio 1
• memoria fisica di 48 K byte (ossia 12 pagine fisiche)
• un solo processo P in esecuzione
• evento: exec (2, 1, 1, 2, 0x 000000401324, X)
l’eseguibile è contenuto nel file X ed ha le seguenti caratteristiche
dimensioni in pagine delle aree: C, K, S e D (BSS): 2, 1, 1 e 2
indirizzo iniziale del codice eseguibile: 0x 0000 0040 1324
NPV dell’indirizzo iniziale del codice eseguibile: 0000 0040 1
‐2‐
mappa di memoria
la mappa di memoria di un processo viene rappresentata con le semplificazioni seguenti (vedi Tabella)
• rappresentazione simbolica delle VMA fondamentali : C, K, S, D e P
• le VMA di tipo M e T sono rappresentate in modo simbolico e numerate progressivamente in ordine di
creazione, per esempio M0, M1, T0, T1, ecc
• al posto dello «end address» si rappresenta la dimensione in pagine della VMA
• protezione: R (indistintamente per read only ed execute) o W (per writable)
• lo i‐node e il volume (disco) sono omessi
• si indica se la VMA è private (P) o shared (S)
• si indica se la VMA è mappata su file (M) oppure anonima (A)
• la mappatura su file è indicata con nome file, offset in pagine oppure con 1, 0 se la VMA è anonima
• la dimensione iniziale della pila viene posta a 3 pagine (la pagina iniziale è quella di growsdown)
‐3‐
esempio 1 – mappa di memoria – soluzione
evento: exec (2, 1, 1, 2, 0x 000000401324, X)
‐5‐
esempio 1 – memoria fisica – soluzione
file name X
evento: exec (2, 1, 1, 2, 0x 000000401324, X)
offset 1 pag
00 : <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : ---- # pagina 1 ||
pagina pagina
fisica 04 : ---- || 05 : ---- ||
virtuale
VMA codice
06 : ---- || 07 : ---- ||
08 : ---- || 09 : ---- ||
processo P
10 : ---- || 11 : ---- ||
• la pagina iniziale del codice è c1 dato che gli NPV delle pagine di codice sono
c0 0x 000000400 (dividendolo: 0x 0000 0040 0)
c1 0x 000000401 (dividendolo: 0x 0000 0040 1)
• la pagina di pila Pp0 è la numero 0x 7FFF FFFF E (base), per ora l’unica di pila che
il processo P stia davvero usando (su 3 pagine che il SO ha previste inizialmente)
‐6‐
tabella delle pagine (TP) – page table (PT)
• la TP (o PT) del processo è rappresentata come una serie di PTE (Page Table Entries)
• le PTE sono tutte e sole quelle relative alle pagine delle varie VMA, cioè le PTE valide
• la PTE è rappresentata nel modo seguente
NPV: NPF protezione dove
NPV è rappresentato secondo le convenzioni viste per la memoria fisica (PAn)
NPF è il numero di pagina fisica se la pagina è allocata in memoria
(si scrive «‐‐» se la pagina non è allocata)
la protezione è R oppure W, come per le VMA
• la protezione iniziale delle pagine allocate in memoria dipende dal tipo di VMA alla
quale le pagine appartengono; per le pagine non allocate è omessa
• va tenuto presente che alcune VMA, come le aree D, P e S di tipo PRIVATE, sono
inizializzate per il meccanismo di COW e quindi inizialmente le loro pagine fisiche
sono registrate con protezione R in tabella delle pagine
‐7‐
esempio 1 – tabella delle pagine (TP) – soluzione
‐8‐
NPV dei registri PC e SP del processore
il NPV è attribuito ai registri PC e SP del processore secondo le ipotesi seguenti
• ogniqualvolta volta viene acceduta una pagina di pila (in lettura o scrittura), il suo
NPV diventa NPV corrente del registro Stack Pointer
• ogniqualvolta volta viene acceduta una pagina di codice, il suo NPV diventa NPV
corrente del registro Program Counter
esempio 1 – soluzione
NPV of PC and SP: c1, p0
‐9‐
TLB (Translation Look‐aside Buffer)
• il TLB è rappresentato come una tabella contenente le righe (entries) di TLB
• ogni riga di TLB è rappresentata nel formato seguente : NPV : NPF – D: A:
• il comportamento del TLB (con i bit Dirty e Accessed) è quello reale
nel TLB si pone A 1 a ogni accesso e D 1 a ogni scrittura
a ogni accesso a pagina non presente in TLB (evento di TLB miss) si carica (nel TLB) la riga
corrispondente dalla tabella delle pagine (TP)
• si fa l’ipotesi che non si verifichi mai un problema di saturazione del TLB
esempio 1 – TLB – soluzione
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
---- || ---- ||
---- || ---- ||
‐ 10 ‐
tipi di evento
negli esercizi seguenti si consideri come stato iniziale il risultato di quello precedente
tipi di evento
• mutazione di codice:
exec (dim C, dim K, dim S, dim D, indirizzo iniziale codice da eseguire, "nome_file")
• accesso alla memoria: Read (lista di NPV) e Write (lista di NPV)
• crescita dell’area dinamica(D): sbrk (numero di pagine da allocare)
• creazione di processo: fork (nome del nuovo processo normale)
• creazione di thread:
clone (nome del nuovo thread, pagina della funzione da eseguire)
• commutazione di contesto: ContextSwitch (nome del processo da mettere in esecuzione)
• terminazione di processo: exit (nome del processo)
• creazione di una nuova area virtuale (VMA):
mmap (indirizzo di VMA, dimensioni di VMA, R/W, S/P, M/A, "nome_file", file offset)
‐ 11 ‐
spazio virtuale dei processi
ESERCIZI
- 12 -
esempio 1 – exec (2, 1, 1, 2, 0x 000000401324, X) – soluzione completa
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 2 , W , P , A , <-1,0>
P 7FFFFFFFC, 3 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :--> <s0 :--> <d0 :--> <d1 :-->
<p0 :02 W> <p1 :--> <p2 :-->
NPV of PC and SP: c1, p0
____MEMORIA FISICA____(pagine libere: 9)_________________________
00 : <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : ---- ||
04 : ---- || 05 : ---- ||
06 : ---- || 07 : ---- ||
08 : ---- || 09 : ---- ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
---- || ---- ||
---- || ---- ||
- 13 -
esercizio 2 – Read (Pk0, Ps0, Pd0, Pd1), Write (Pp1, Pp2, Pp3)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 2 , W , P , A , <-1,0>
P 7FFFFFFFC, 3 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :--> <s0 :--> <d0 :--> <d1 :-->
<p0 :02 W> <p1 :--> <p2 :-->
NPV of PC and SP: c1, p0
____MEMORIA FISICA____(pagine libere: 9)_________________________
00 : <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : ---- ||
04 : ---- || 05 : ---- ||
06 : ---- || 07 : ---- ||
08 : ---- || 09 : ---- ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
---- || ---- ||
---- || ---- || ‐ 14 ‐
Read (Pk0, Ps0, Pd0, Pd1), Write (Pp1, Pp2, Pp3)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 2 , W , P , A , <-1,0>
P 7FFFFFFFC, 3 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :--> <d0 :--> <d1 :-->
<p0 :02 W> <p1 :--> <p2 :-->
NPV of PC and SP: c1, p0
____MEMORIA FISICA____(pagine libere: 9)_________________________
00 : <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : Pk0 / <X,2> ||
04 : ---- || 05 : ---- ||
06 : ---- || 07 : ---- ||
08 : ---- || 09 : ---- ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
Pk0 : 03 - 0: 1: || ---- ||
---- || ---- || ‐ 15 ‐
Read (Pk0, Ps0, Pd0, Pd1), Write (Pp1, Pp2, Pp3)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 2 , W , P , A , <-1,0>
P 7FFFFFFFC, 3 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :--> <d1 :-->
<p0 :02 W> <p1 :--> <p2 :-->
NPV of PC and SP: c1, p0
____MEMORIA FISICA____(pagine libere: 9)_________________________
00 : <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : Pk0 / <X,2> ||
04 : Ps0 / <X,3> || 05 : ---- ||
06 : ---- || 07 : ---- ||
08 : ---- || 09 : ---- ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
Pk0 : 03 - 0: 1: || Ps0 : 04 - 0: 1: ||
---- || ---- ||
‐ 16 ‐
Read (Pk0, Ps0, Pd0, Pd1), Write (Pp1, Pp2, Pp3)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 2 , W , P , A , <-1,0>
P 7FFFFFFFC, 3 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :00 R> <d1 :00 R>
<p0 :02 W> <p1 :--> <p2 :-->
NPV of PC and SP: c1, p0
____MEMORIA FISICA____(pagine libere: 9)_________________________
00 : Pd0 / Pd1 / <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : Pk0 / <X,2> ||
04 : Ps0 / <X,3> || 05 : ---- ||
06 : ---- || 07 : ---- ||
08 : ---- || 09 : ---- ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
Pk0 : 03 - 0: 1: || Ps0 : 04 - 0: 1: ||
Pd0 : 00 - 0: 1: || Pd1 : 00 - 0: 1: ||
---- || ---- || ‐ 17 ‐
Read (Pk0, Ps0, Pd0, Pd1), Write (Pp1, Pp2, Pp3)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 2 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :00 R> <d1 :00 R>
<p0 :02 W> <p1 :05 W> <p2 :06 W> <p3 :07 W> <p4 :-->
NPV of PC and SP: c1, p3
____MEMORIA FISICA____(pagine libere: 4)_________________________
00 : Pd0 / Pd1 / <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : Pk0 / <X,2> ||
04 : Ps0 / <X,3> || 05 : Pp1 ||
06 : Pp2 || 07 : Pp3 ||
08 : ---- || 09 : ---- ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
Pk0 : 03 - 0: 1: || Ps0 : 04 - 0: 1: ||
Pd0 : 00 - 0: 1: || Pd1 : 00 - 0: 1: ||
Pp1 : 05 - 1: 1: || Pp2 : 06 - 1: 1: ||
Pp3 : 07 - 1: 1: || ----- || ‐ 18 ‐
esercizio 3 – sbrk (2), Write (Pd1, Pd2)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 2 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :00 R> <d1 :00 R>
<p0 :02 W> <p1 :05 W> <p2 :06 W> <p3 :07 W> <p4 :-->
NPV of PC and SP: c1, p3
____MEMORIA FISICA____(pagine libere: 4)_________________________
00 : Pd0 / Pd1 / <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : Pk0 / <X,2> ||
04 : Ps0 / <X,3> || 05 : Pp1 ||
06 : Pp2 || 07 : Pp3 ||
08 : ---- || 09 : ---- ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
Pk0 : 03 - 0: 1: || Ps0 : 04 - 0: 1: ||
Pd0 : 00 - 0: 1: || Pd1 : 00 - 0: 1: ||
Pp1 : 05 - 1: 1: || Pp2 : 06 - 1: 1: ||
Pp3 : 07 - 1: 1: || ----- || ‐ 19 ‐
sbrk (2), Write (Pd1, Pd2)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :1 R> <k0 :03 R> <s0 :04 R> <d0 :00 R> <d1 :08 W>
<d2 :09 W> <d3 :--> <p0 :02 W> <p1 :05 W> <p2 :06 W> <p3 :07 W> <p4 :-->
NPV of PC and SP: c1, p3
____MEMORIA FISICA____(pagine libere: 2)_________________________
00 : Pd0 / <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : Pk0 / <X,2> ||
04 : Ps0 / <X,3> || 05 : Pp1 ||
06 : Pp2 || 07 : Pp3 ||
08 : Pd1 || 09 : Pd2 ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
Pk0 : 03 - 0: 1: || Ps0 : 04 - 0: 1: ||
Pd0 : 00 - 0: 1: || Pd1 : 08 - 1: 1: ||
Pp1 : 05 - 1: 1: || Pp2 : 06 - 1: 1: ||
Pp3 : 07 - 1: 1: || Pd2 : 09 - 1: 1: || ‐ 20 ‐
esercizio 4 – fork (Q), Write (Pd0) – stato iniziale
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :00 R> <d1 :08 W>
<d2 :09 W> <d3 :--> <p0 :02 W> <p1 :05 W> <p2 :06 W> <p3 :07 W> <p4 :-->
NPV of PC and SP: c1, p3
____MEMORIA FISICA____(pagine libere: 2)_________________________
00 : Pd0 / <ZP> || 01 : Pc1 / <X,1> ||
02 : Pp0 || 03 : Pk0 / <X,2> ||
04 : Ps0 / <X,3> || 05 : Pp1 ||
06 : Pp2 || 07 : Pp3 ||
08 : Pd1 || 09 : Pd2 ||
10 : ---- || 11 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
Pk0 : 03 - 0: 1: || Ps0 : 04 - 0: 1: ||
Pd0 : 00 - 0: 1: || Pd1 : 08 - 1: 1: ||
Pp1 : 05 - 1: 1: || Pp2 : 06 - 1: 1: ||
Pp3 : 07 - 1: 1: || Pd2 : 09 - 1: 1: || ‐ 21 ‐
fork (Q), Write (Pd0)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :11 W> <d1 :08 R>
<d2 :09 R> <d3 :--> <p0 :02 R> <p1 :05 R> <p2 :06 R> <p3 :10 W>
<p4 :-->
NPV of PC and SP: c1, p3
PROCESSO: Q *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :00 R> <d1 :08 R>
<d2 :09 R> <d3 :--> <p0 :02 R> <p1 :05 R> <p2 :06 R> <p3 :07 D W>
<p4 :-->
NPV of PC and SP: c1, p3 ‐ 22 ‐
fork (Q), Write (Pd0) (memoria + 2 pagine)
‐ 23 ‐
evento di creazione dei thread
‐ 24 ‐
esercizio 5 – clone (R, c0), clone (S, c1) – stato iniziale (P in esecuzione)
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :11 W> <d1 :08 R>
<d2 :09 R> <d3 :--> <p0 :02 R> <p1 :05 R> <p2 :06 R> <p3 :10 W>
<p4 :-->
NPV of PC and SP: c1, p3
PROCESSO: Q *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :0 R> <d1 :08 R>
<d2 :09 R> <d3 :--> <p0 :02 R> <p1 :05 R> <p2 :6 R> <p3 :07 W>
<p4 :-->
NPV of PC and SP: c1, p3
‐ 25 ‐
clone (R, c0), clone (S, c1) – VMA e PT
PROCESSO: P/R/S *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
T1 7FFFF77FB, 2 , W , P , A , <-1,0>
T0 7FFFF77FE, 2 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :11 W> <d1 :08 R>
<d2 :09 R> <d3 :--> <p0 :02 R> <p1 :05 R> <p2 :06 R> <p3 :10 D W>
<p4 :--> <t00:12 W> <t01:--> <t10:13 W> <t11:-->
process P - NPV of PC and SP: c1, p3
process R - NPV of PC and SP: c0, t00
process S - NPV of PC and SP: c1, t10
PROCESSO: Q *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :00 R> <d1 :08 R>
<d2 :09 R> <d3 :--> <p0 :02 R> <p1 :05 R> <p2 :06 R> <p3 :07 W>
<p4 :- ->
NPV of PC and SP: c1, p3 ‐ 26 ‐
clone (R, c0), clone (S, c1) – memoria fisica
Stato iniziale
____MEMORIA FISICA____(pagine libere: 2)_________________________
00 : Qd0 / <ZP> || 01 : Pc1 / Qc1 / <X,1> ||
02 : Pp0 / Qp0 || 03 : Pk0 / Qk0 / <X,2> ||
04 : Ps0 / Qs0 / <X,3> || 05 : Pp1 / Qp1 ||
06 : Pp2 / Qp2 || 07 : Qp3 ||
08 : Pd1 / Qd1 || 09 : Pd2 / Qd2 ||
10 : Pp3 || 11 : Pd0 ||
12 : ---- || 13 : ---- ||
Stato finale
____STATO del TLB________________________________________________
PRSc1 : 01 - 0: 1: || PRSp0 : 02 - 1: 1: ||
PRSk0 : 03 - 0: 1: || PRSs0 : 04 - 0: 1: ||
PRSd0 : 11 - 1: 1: || PRSd1 : 08 - 1: 1: ||
PRSp1 : 05 - 1: 1: || PRSp2 : 06 - 1: 1: ||
PRSp3 : 10 - 1: 1: || PRSd2 : 09 - 1: 1: ||
PRSt00: 12 - 1: 1: || PRSt10: 13 - 1: 1: ||
‐ 28 ‐
evento di context switch
‐ 29 ‐
esercizio 6 – ContextSwitch (Q)
Stato iniziale
________STATO del TLB________________________________________________
PRSc1 : 01 - 0: 1: || PRSp0 : 02 - 1: 1: ||
PRSk0 : 03 - 0: 1: || PRSs0 : 04 - 0: 1: ||
PRSd0 : 11 - 1: 1: || PRSd1 : 08 - 1: 1: ||
PRSp1 : 05 - 1: 1: || PRSp2 : 06 - 1: 1: ||
PRSp3 : 10 - 1: 1: || PRSd2 : 09 - 1: 1: ||
PRSt00: 12 - 1: 1: || PRSt10: 13 - 1: 1: ||
Stato finale
____MEMORIA FISICA____(pagine libere: 0)_________________________
00 : Qd0 / <ZP> || 01 : PRSc1 / Qc1 / <X,1> ||
02 : PRSp0 / Qp0 D || 03 : PRSk0 / Qk0 / <X,2> ||
04 : PRSs0 / Qs0 / <X,3> || 05 : PRSp1 / Qp1 D ||
06 : PRSp2 / Qp2 D || 07 : Qp3 D ||
08 : PRSd1 / Qd1 D || 09 : PRSd2 / Qd2 D ||
10 : PRSp3 D || 11 : PRSd0 D ||
12 : PRSt00 D || 13 : PRSt10 D ||
exit (nome del processo da mettere in esecuzione)
• elimina tutti gli NPV del processo da tutte le strutture dati
• tale eliminazione può dare luogo alla creazione di pagine libere in memoria, laddove
la NPV eliminata fosse stata l’unica occupante di una pagina fisica non appartenente
alla Page Cache (NPV anonima)
• alla fine viene eseguita un’operazione equivalente a una commutazione di contesto,
mettendo in esecuzione il nuovo processo indicato nell’evento
• se il processo terminato ha dei thread secondari attivi, anche questi vanno eliminati
• exit di un thread non modifica né la memoria né la PT del processo cui il thread
appartiene; la VMA della pila del thread terminato viene considerata rilasciata
(libera) ed è riutilizzabile per un nuovo thread; nel modello il nome del thread
terminato viene eliminato dagli NPV simbolici dove compariva
esercizio 7: exit (S), ContextSwitch (R), exit (P)
‐ 31 ‐
esercizio 7 – Q in esecuzione, exit (S), ContextSwitch (R), exit (P)
PROCESSO: P/R/S *********************************************************
VMA : C 000000400, 2 , R , P , M , <X,0>
K 000000600, 1 , R , P , M , <X,2>
S 000000601, 1 , W , P , M , <X,3>
D 000000602, 4 , W , P , A , <-1,0>
T1 7FFFF77FB, 2 , W , P , A , <-1,0>
T0 7FFFF77FE, 2 , W , P , A , <-1,0>
P 7FFFFFFFA, 5 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :03 R> <s0 :04 R> <d0 :11 D W> <d1 :08 D R>
<d2 :09 D R> <d3 :--> <p0 :02 D R> <p1 :05 D R> <p2 :06 D R>
<p3 :10 D W> <p4 :--> <t00:12 D W> <t01:--> <t10:13 D W> <t11:--> ...
process S - NPV of PC and SP: c1, t10
____MEMORIA FISICA____(pagine libere: 1)_________________________
00 : <ZP> || 01 : PRSc1 / <X,1> ||
02 : PRSp0 D || 03 : PRSk0 / <X,2> ||
04 : PRSs0 / <X,3> || 05 : PRSp1 D ||
06 : PRSp2 D || 07 : ---- ||
08 : PRSd1 D || 09 : PRSd2 D ||
10 : PRSp3 D || 11 : PRSd0 D ||
12 : PRSt00 D || 13 : PRSt10 D ||
____STATO del TLB________________________________________________
PRSc1 : 01 - 0: 1: || PRSt10 : 13 - 1: 1: ||
...
‐ 32 ‐
exit (S), ContextSwitch (R), exit (P)
Stato iniziale
____MEMORIA FISICA____(pagine libere: 1)_________________________
00 : <ZP> || 01 : PRSc1 / <X,1> ||
02 : PRSp0 D || 03 : PRSk0 / <X,2> ||
04 : PRSs0 / <X,3> || 05 : PRSp1 D ||
06 : PRSp2 D || 07 : ---- ||
08 : PRSd1 D || 09 : PRSd2 D ||
10 : PRSp3 D || 11 : PRSd0 D ||
12 : PRSt00 D || 13 : PRSt10 D ||
____STATO del TLB________________________________________________
PRSc1 : 01 - 0: 1: || PRSt10 : 13 - 1: 1: ||
Stato finale
____MEMORIA FISICA____(pagine libere: 0)_________________________
00 : <ZP> || 01 : PRSc1 / <X,1> ||
02 : PRSp0 D || 03 : PRSk0 / <X,2> ||
04 : PRSs0 / <X,3> || 05 : PRSp1 D ||
06 : PRSp2 D || 07 : PRSc0 / <X,0> ||
08 : PRSd1 D || 09 : PRSd2 D ||
10 : PRSp3 D || 11 : PRSd0 D ||
12 : PRSt00 D || 13 : PRSt10 D ||
Stato finale
____MEMORIA FISICA____(pagine libere: 0)_________________________
00 : <ZP> || 01 : PSc1 / <X,1> ||
02 : PSp0 D || 03 : PSk0 / <X,2> ||
04 : PSs0 / <X,3> || 05 : PSp1 D ||
06 : PSp2 D || 07 : PSc0 / <X,0> ||
08 : PSd1 D || 09 : PSd2 D ||
10 : PSp3 D || 11 : PSd0 D ||
12 : PSt00 D || 13 : PSt10 D ||
NB: mmap (0x 10000000, 2, W, S, M, "G", 2) senza zeri in testa (idem gli altri)
NB: 0x 000010000000 è indirizzo di byte, il suo NPV è 0000 1000 0 (idem gli altri)
‐ 35 ‐
esercizio 8 – soluzione
PROCESSO: P *********************************************************
VMA : C 000000400, 2 , R , P , M , <XX,0>
K 000000600, 1 , R , P , M , <XX,2>
exec (2, 1, 1, 2, c1, “XX”)
S 000000601, 1 , W , P , M , <XX,3>
D 000000602, 2 , W , P , A , <-1,0> mmap (0x 10000000, 2, W, S, M, "G", 2)
M0 000010000, 2 , W , S , M , <G,2> mmap (0x 20000000, 1, R, S, M, "G", 4)
M1 000020000, 1 , R , S , M , <G,4> mmap (0x 30000000, 1, W, P, M, "F", 2)
M2 000030000, 1 , W , P , M , <F,2>
M3 000040000, 1 , W , P , A , <-1,0> mmap (0x 40000000, 1, W, P, A, ‐1, 0)
P 7FFFFFFFC, 3 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :1 R> <k0 :--> <s0 :--> <d0 :--> <d1 :-->
<p0 :02 W> <p1 :--> <p2 :--> <m00:--> <m01:--> <m10:-->
<m20:--> <m30:-->
process P - NPV of PC and SP: c1, p0
____MEMORIA FISICA____(pagine libere: 7)_________________________
00 : <ZP> || 01 : Pc1 / <XX,1> ||
02 : Pp0 || 03 : ---- ||
04 : ---- || 05 : ---- ||
06 : ---- || 07 : ---- ||
08 : ---- || 09 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: || ‐ 36 ‐
esercizio 9 – Read (Pm10, Pm30), Write (Pm00, Pm20)
PROCESSO: P *********************************************************
VMA : ...
M0 000010000, 2 , W , S , M , <G,2>
M1 000020000, 1 , R , S , M , <G,4>
M2 000030000, 1 , W , P , M , <F,2>
M3 000040000, 1 , W , P , A , <-1,0>
P 7FFFFFFFC, 3 , W , P , A , <-1,0>
PT: <c0 :--> <c1 :01 R> <k0 :--> <s0 :--> <d0 :--> <d1 :-->
<p0 :02 W> <p1 :--> <p2 :--> <m00:04 W> <m01:--> <m10:03 R>
<m20:06 W> <m30:00 R>
process P - NPV of PC and SP: c1, p0
____MEMORIA FISICA____(pagine libere: 3)_________________________
00 : Pm30 / <ZP> || 01 : Pc1 / <XX,1> ||
02 : Pp0 || 03 : Pm10 / <G,4> ||
04 : Pm00 / <G,2> || 05 : <F,2> ||
06 : Pm20 || 07 : ---- ||
08 : ---- || 09 : ---- ||
____STATO del TLB________________________________________________
Pc1 : 01 - 0: 1: || Pp0 : 02 - 1: 1: ||
Pm10 : 03 - 0: 1: || Pm30 : 00 - 0: 1: ||
Pm00 : 04 - 1: 1: || Pm20 : 06 - 1: 1: || ‐ 37 ‐