Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Esercizio 1.8
Si supponga di effettuare le seguenti operazioni in sequenza su un sistema RAID livello 5 costituito
da 5 dischi identici (inizialmente vuoti) e con blocchi (strip) da 1 byte:
(1) Scrittura della sequenza di byte:
01000101, 00000110, 10110100, 11101101, 11000111, 10000101,
01110111, 01010101
Per ogni punto, s’illustrino le operazioni compiute dal sistema, evidenziando quante READ e quante
WRITE vengono effettuate, e quante di queste sono fatte in parallelo.
NOTA:
• Per ognuno dei suddetti punti, il controller RAID riceve i comandi di scrittura/lettura di byte
come un'unica richiesta.
• L'ordine di scrittura sui dischi è da sinistra verso destra, dall'alto verso il basso.
• Racchiudere ogni blocco di parità tra parentesi tonde.
• Il sistema RAID non è dotato di dischi hot-spare.
Soluzione
Punto (1)
Ogni stripe del RAID è composta da 4 gruppi di byte + 1 byte rappresentante il parity block,
ottenuto tramite lo XOR bit-a-bit dei 4 byte (o, in modo equivalente, calcolando la parità pari bit-a-
bit).
Per la scrittura della sequenza di byte:
01000101, 00000110, 10110100, 11101101, 11000111, 10000101, 01110111, 01010101
Seconda stripe:
11000111 xor
10000101 xor
01110111 xor
01010101 =
--------
01100000
Ogni stripe (5 write) può essere scritta in parallelo. Stripe differenti sono scritte sequenzialmente.
In totale, vengono effettuate 0 letture e 10 scritture (di cui in parallelo a gruppi di 5).
Punto (2)
La lettura del secondo e del settimo byte di dati può avvenire in parallelo in quanto si trovano su
dischi differenti. Il blocco di parità non viene letto. Lo stato del disco rimane invariato.
In totale, vengono effettuate 2 letture in parallelo, e 0 scritture.
Punto (3)
Per la modifica del terzo byte di dati da 10110100 a 01001011, occorre decidere quale tra il metodo
della parità additiva e sottrattiva utilizzare. In questo caso, è più efficiente usare la parità sottrattiva
in quanto richiede soltanto 2 letture, mentre la parità additiva ne richiederebbe 3. Per cui, secondo la
parità sottrattiva, (1) si legge il vecchio valore del terzo byte e il vecchio valore del blocco di parità,
(2) poi si calcola lo XOR insieme al nuovo valore del terzo byte:
10110100 xor
00011010 xor
01001011 =
--------
11100101
e (3) infine si scrive sui dischi il nuovo valore del terzo byte e il nuovo valore del blocco di parità.
Sia le letturae, sia le scritture possono essere fatte in parallelo.
Soluzione
Punto (a) – FCFS
• Ordine di visita: 11, 23, 21, 3, 41, 7, 39
• Numero totale cilindri: |31-11|+|11-23|+|23-21|+|21-3|+|3-41|+|41-7|+|7-39| = 156
• Tempo totale di seek: 156*6 msec = 936 msec
Soluzione
Il valore Td corrisponde al break-even point, cioè:
Esd + Ps*(Td - Tsd - Twu) + Ewu = Pw*Td
Cioè:
Td = (Esd + Ewu - Ps*(Tsd + Twu))/(Pw - Ps)
Sostituendo i dati del problema, si ottiene:
Td = (26 + 60 – 2*(10 + 5))/(6-2) = 14 sec
Quindi:
• TEST > 14 sec → conviene passare da “active” a “idle”
• TEST < 14 sec → non conviene
• TEST = 14 sec → indifferente
In conclusione, diventa vantaggioso porre il disco da “active” a “sleep” quando TEST > 14 sec.
Esercizi FILE SYSTEMS
Esercizio 2.2
Si consideri un file system installato su un disco da 1TiB. Si supponga che il file system utilizzi
blocchi di 2 KiB e indirizzi a blocchi a 64 bit, e si consideri un file “foo.txt” cui sono stati allocati i
seguenti blocchi di dati (elencati in ordine di allocazione): 1080, 1081, 1082, 7400, 7401, 7407,
12510, 22418, 22419, 22420, 23710, 1079.
(a) Si disegni la struttura dati utilizzata per tenere traccia di tali blocchi nei seguenti casi:
(1) Allocazione basata su lista concatenata di blocchi.
(2) Allocazione basata su lista concatenata con File Allocation Table (FAT; si usi -1 come
codice di terminazione di lista).
(3) Allocazione indicizzata basata su i-node con 4 blocchi diretti, 1 puntatore indiretto
singolo e 1 puntatore indiretto doppio (si usi -1 per indicare un campo della struttura non
utilizzato). Il blocco contenente l’i-node ha indirizzo 512.
(b) Si dica qual è la dimensione massima di un file nei tre casi del punto (a).
(c) Si dica quali informazioni occorre memorizzare nella entry di directory del file nei tre casi
del punto (a).
Soluzione
Punto (a.1) – Allocazione a lista concatenata
Ogni nodo della lista è un blocco da 2 KiB, di cui 8 B sono usati per memorizzare il puntatore al
blocco rappresentante il nodo successivo e i rimanenti (2 KiB – 8 B) sono usati per memorizzare i
dati. Nella figura sottostante, le frecce che partono da un nodo e arrivano a quello successivo hanno
una funzionalità puramente visiva. In realtà, il campo di un nodo per il puntatore al nodo successivo
conterrà l'indirizzo del blocco successivo; per es., per il blocco 7407, in tale campo ci sarà il valore
12510.
Punto (a.2) – Allocazione con FAT
La FAT ha un numero di entry pari a floor(240/211) = 229 e occupa uno spazio pari a 229*23 B.
1079 -1
1080 1081
1081 1082
1082 7400
… …
7400 7401
7401 7407
… …
7407 12510
… …
12510 22418
… …
22418 22419
22419 22420
22420 23710
… …
23710 1079
… …
Punto (a.3) – Allocazione con i-node
Il file è composto da 12 blocchi, di cui i primi 4 possono essere indirizzati da 4 blocchi diretti
nell'inode. Un blocco da 2 KiB può contenere floor(2 11 B / 23 B) =256 indirizzi di blocchi (ogni
indirizzo occupa 64 bit). Quindi, i rimanentti 8 blocchi del file sono indirizzati tramite il blocco
indiretto singolo, per il quale si assume che punti al blocco 513, il quale rappresenta un blocco
indice costituito da puntatori diretti. Il puntatore indiretto doppio è inutilizzato.
(blocco 512)
|-----------|
attributi: | … |
|-----------|
blocco dir.: | 1080 |
|-----------|
| 1081 |
|-----------|
| 1082 |
|-----------|
| 7400 |
|-----------| (blocco 513)
blocco indir. singolo: | 513 |→ |-----------|
|-----------| | 7401 |
blocco indir. doppio: | -1 | |-----------|
|-----------| | 7407 |
|-----------|
| 12510 |
|-----------|
| 22418 |
|-----------|
| 22419 |
|-----------|
| 22420 |
|-----------|
| 23710 |
|-----------|
| 1079 |
|-----------|
| -1 |
|-----------|
| … |
|-----------|
| -1 |
|-----------|
Punto (b) – Max dimensione file
• Lista concatenata: è possibile sfruttare qualsiasi blocco sul disco, quindi la dimensione è
limitata dalla capacità del disco/partizione su cui è installato il file system. Non è possibile
sfruttare l'intero spazio a disposizione in quanto ogni nodo della lista ha un overhead dato da
8 B utilizzati per memorizzare il puntatore al nodo successivo della lista.
Quindi: <spazio totale>-<spazio usato dai puntatori a blocchi> = 240B - floor(240B/211B)*8B
• FAT: come la lista concatenata, il limite alla dimensione del file è dato dalla capacità del
disco/partizione su cui è installato il file system. Anche in questo caso, non sarà possibile
sfruttare l'intera capacità del disco a causa dello spazio occupato dalla FAT dato dal prodotto
<numero totale di blocchi sul disco>* 8 B.
Quindi: <spazio totale>-<spazio usato dalla FAT> = 240B - floor(240B/211B)*8B
• I-node: (<num. puntatori diretti> + <num. puntatori in un blocco> + <num. puntatori in un
blocco>2)*<dim. blocco> = (4 + floor(211/23) + floor(211/23)2) * 2 KiB = 65796 * 2 KiB =
131592 KiB
Per lo schema indicizzato con i-node, è sufficiente memorizzare, oltre al nome del file, il puntatore
al blocco contenente l'i-node, cioè:
|---------|------|
| foo.txt | 512 |
|---------|------|
Esercizio 2.4
Si consideri la cache di un file system che utilizza la tecnica di hashing per velocizzare il
reperimento dei blocchi in essa presenti, e la politica LRU per il rimpiazzamento dei blocchi. Si
ipotizzi inoltre che tale cache preveda l’uso di 8 “slot” per la tabella di hash, indirizzati da 0 a 7, e
che la funzione di hashing utilizzata sia h(B) = B mod 8, dove B è l’indirizzo del blocco da
memorizzare nella cache.
(a) Si disegni lo stato della cache dopo l’inserimento dei seguenti blocchi: 4, 20, 44, 244,
9,17,41, 57, 159, 231.
(b) Partendo dal punto precedente, si disegni lo stato della cache dopo l’inserimento del blocco
347.
Si supponga che:
• la dimensione massima della cache sia di 10 blocchi,
• l'ordine di arrivo dei blocchi sia da sinistra verso destra (ad es., nel punto (a), il primo
blocco ad arrivare è il blocco 4),
• la cache sia inizialmente vuota.
Nei diagrammi, indicare quale elemento rappresenta l’elemento LRU e quale quello MRU.
Soluzione
Punto (a)
Valori hash:
h(4) = 4
h(20) = 4
h(44) = 4
h(244) = 4
h(9) = 1
h(17) = 1
h(41) = 1
h(57) = 1
h(159) = 7
h(231) = 7
Il puntatore LRU punta al nodo per il blocco 4, e il puntatore MRU punta al nodo per il blocco 231.
Punto (b)
E’ arrivato un nuovo blocco. ma la cache è piena. Occorre rimuovere l’elemento LRU, cioè il
blocco 4, aggiornare il puntatore LRU facendolo puntare al nodo per il blocco 20, e aggiornare il
puntatore MRU facendolo puntare al nodo per il blocco 347.
Valore hash: h(347) = 3
Esercizio 2.8
Si consideri il seguente file system, dove i quadrati rappresentano delle directory, i cerchi
rappresentano dei file, i numeri all'interno delle forme rappresentano i numeri degli i-node e le
forme colorate di grigio rappresentano delle modifiche, e si applichi l'algoritmo dump di UNIX per
il dump logico.
Per ogni fase dell’algoritmo dump si utilizzi una tabella separata con due righe, la prima contenente
i numeri di i-node e la seconda contenente lo stato di marcatura degli i-node alla fine della fase (una
X, indica un i-node marcato; nulla, indica un i-node non marcato). Ad es., se alla fine della fase N
l’i-node 1 è marcato mentre l’i-node 2 no, la relativa tabella ha la seguente forma:
1 2 …
X
Soluzione
Fase 1: visita dell'albero (a partire dalla radice) per contrassegnare i file modificati e tutte le
directory che s’incontrano lungo l’attraversamento. Alla fine di questa fase, la tabella di dump
risulta come segue:
1 2 3 4 5 6 7 8 9 10 11 12 13
X X X X X X X X X X
Fase 2: visita dell'albero per lasciare contrassegnate solo quelle directory che contengono file
modificati e directory che portano a file modificati. Alla fine di questa fase, la tabella di dump
risulta come segue:
1 2 3 4 5 6 7 8 9 10 11 12 13
X X X X X X X X X
Fase 3: si effettua il dump delle directory che sono rimaste contrassegnate (cioè, 1, 2, 4, 7, e 8), e si
deselezionano le directory di cui si è fatto il dump. Alla fine di questa fase, la tabella di dump risulta
come segue:
1 2 3 4 5 6 7 8 9 10 11 12 13
X X X X
Fase 4: si effettua il dump dei file modificati (cioè, quelli contrassegnati: 3, 6, 9, 12), e si
deselezionano. Alla fine di questa fase, tutti gli elementi della tabella di dump risultano
deselezionati:
1 2 3 4 5 6 7 8 9 10 11 12 13
Esercizi VIRTUALIZZAZIONE
Esercizio 3.1
Nell’ambito della virtualizzazione, si consideri la tecnica nota come shadow paging. Si supponga
che su uno stesso computer siano in esecuzione due diverse macchine virtuali, su ciascuna delle
quali è in esecuzione la stessa applicazione (corrispondente a due distinti processi, denominati
entrambi P1), come raffigurato nella figura sottostante. Si riportino le shadow page table dei due
processi in questione
Soluzione
Si suppone che l’hypervisor assegni alle VM i seguenti page frame dell’host:
• VM1: 100, 111, 122, 133, 144
• VM2: 200, 201, 202, 203, 204
Shadow page table per P1 in VM1: