Paginazione
NPV SPIAZZAMENTO
VIRT
20 12
32
# Pagine ->
Es 1
R = 10 pagine Page Size = 4096 B
Code Segment Size = 16 K #PC = 16/4 = 4p Data Segment Size = 20 K #DP = 20/4 = 5p
C1 C2 C3 C4 D1 D2 D3 D4 D5
Data Segment Size AUMENTA = 36 K #DP = 36/4 = 9p C1
C2 C3 C4 D1 D2 D3
Uso la LRU D7 -> D1 (Il codice cicla e non si tocca) C1
C2 C3 C4 D7 D2 D3 D4 D5 D6
D8 -> D2 , D9 -> D3 ecc C1
C2 C3 C4 D7 D8 D9 D4 D5 D6
La LRU funziona quindi male quando abbiamo dati di poco superiori alla dimensione della memoria. La LIFO qui invece conserverà 5 celle di memoria su 6 e userà l’ultima per caricare al volo.
Per quanto riguarda la traduzione in memoria fisica, supponiamo 512 MB di Ram.
PHY 512 M
29
Il sistema più veloce è tagliare la memoria fisica nello stesso offset di quella virtuale
PHY NPF OFFSET
17 12
Ecco un esempio di tabella MMU da compilare durante le esercitazioni PID NPF NPF V
Es 2
Phy -> 32 K (15 bit)
Vir -> 32 K
Page Size -> 4 K (12 bit) Cx: 12 K -> 3 p Cy 8 K -> 1 p Dx: 8 K -> 2 p Dy 8 K -> 1 p Px: 4 K -> 1 p Py 4 K -> 1 p
VIRT 3 12
NPV OFFSET
PHY 3 12
NPF OFFSET
Indirizzo Virtuale X Y
0 Cx0 Cy0
1 Cx1 Cy1
2 Cx2 Dy0
3 Dx0 Dy1
4 Dx1 Con
5 Con
6
7 Px0 Px0
Nell’esercizio quando il programma viene lanciato nel sistema viene lanciata una pagina di codice e una pagina di stack
Indirizzo Fisico 0 1 2 3 4 5
MMU
PID NPF NPF V
P 0 0 1
P 7 1 1
P 3 2 1
P 4 3 1
Q 0 4 1
Q 7 5 1
Indirizzo Fisico
0 CPO
1 PP 0/7
2 DP 0
3 DP 1
4 CQ 0
5 PQ 0
6 7
Spiazzamento indirizzo 0x2CAF - > 0x0F24
0 x 0 F 2 4
NPV OFFSET
Il codice è rimasto in una pagina già caricata quindi non succede nulla.
Cresce lo stack di X
Indirizzo Virtuale X Y
0 Cx0 Cy0
1 Cx1 Cy1
2 Cx2 Dy0
3 Dx0 Dy1
4 Dx1 Con
5 Con
6 Px1
7 Px0 Px0
MMU
PID NPF NPF V
P 0 0 1
P 7 1 1
P 3 2 1
P 4 3 1
Q 0 4 1
Q 7 5 1
Q 3 6 1
Q 6 7 1
Q effettua una exit -> le celle della memoria occupate NON vengono cancellate ma considerate come libere.
MMU
PID NPF NPF V
P 0 0 0
P 7 1 0
P 3 2 0
P 4 3 0
Q 0 4 1
Q 7 5 1
Q 3 6 1
Q 6 7 1
Nasce un nuovo processo R di tipo y.
MMU
PID NPF NPF V
R 0 0 1
R 7 1 1
R 4 2 1
R 5 2 1
Q 0 4 1
Q 7 5 1
Q 3 6 1
Q 6 7 1
Es 3
Phy -> 64 k 16 bit
Virt -> 64 k 16 bit
P.S. -> 4 k 12
VIRT 4 12
NPV OFFSET
PHY 4 12
NPF OFFSET
Cx: 8 k 2 p Dx: 12 k 3 p Px: 4 k 1 p Cy: 8 k 2 p Dy: 8 k 2 p Py: 4 k 1 p LRU
R = 4
Base x 0x300 Base y 0x13000 Cond 4 k 1 p
Indirizzo Virtuale X Y
0 Cx0 Cy0
1 Cx1 Cy1
2 Dx0 Dy0
3 Dx1 Dy1
4 Dx2
5
6 Cond
7 Cond
8 9 A B C D E
F Pxo Pyo
Fork e creazione di P Indirizzo Fisico
0 CP0
1 DP0
2 PP0
3 4 5 6 7 8 9 A B C D E F
MMU
PID NPV NPF V
P 0 0 1
P 2 1 1
P F 2 1
P 3 3 1
Q 0 4 1
Q 2 5 1
Q F 6 1
Q 4 7 1
Avvenuta la Creazione di un blocco dati Q in indirizzo virtuale 4.
Indirizzo Virtuale X Y
0 Cx0 Cy0
1 Cx1 Cy1
2 Dx0 Dy0
3 Dx1 Dy1
4 Dx2 Dq2
5