Esercizi Extra
Esercizi Input/Output
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:
-
Scrittura della sequenza di byte: 01000101, 00000110, 10110100, 11101101, 11000111, 10000101, 01110111, 01010101
-
Lettura secondo e settimo byte di dati
-
Modifica del terzo byte di dati da 10110100 a 01001011
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.
Risposta:
Punto 1
Calcolo della strip di parità per la prima scrittura.
01000101\oplus \\ 00000110\oplus \\ 10110100\oplus\\ 11101101\oplus\\ ------\\00011010
Disco 0 | Disco 1 | Disco 2 | Disco 3 | Disco 4 |
---|---|---|---|---|
01000101 | 00000110 | 10110100 | 11101101 | (00011010) |
Per svolgere questa operazione sono servite 5 WRITE, tutte in parallelo.
Calcolo della seconda strip di parità per la seconda scrittura.
11000111\oplus\\ 10000101\oplus\\01110111\oplus\\ 01010101\oplus\\ ------\\01100000
Disco 0 | Disco 1 | Disco 2 | Disco 3 | Disco 4 |
---|---|---|---|---|
01000101 | 00000110 | 10110100 | 11101101 | (00011010) |
11000111 | 10000101 | 01110111 | (01100000) | 01010101 |
Per svolgere questa operazione sono servite 5 WRITE, tutte in parallelo.
Complessivamente sono servite 10 WRITE, di cui in parallelo in gruppi da 5.
Punto 2:
La lettura del secondo e del settimo byte di dati può avvenire, perché le strip necessarie si trovano su dischi diversi.
In particolare si trovano sul disco 2 e sul disco 4 .
Disco 0 | Disco 1 | Disco 2 | Disco 3 | Disco 4 |
---|---|---|---|---|
01000101 | 00000110 | 10110100 | 11101101 | (00011010) |
11000111 | 10000101 | 01110111 | (01100000) | 01010101 |
Sono necessarie 2 READ in parallelo.
Punto 3:
Dobbiamo decidere se utilizzare una additive o subtractive parity. In questo caso conviene utilizzare una subtractive parity, dato richiede 2 READ (vecchia strip di parità e il vecchio contenuto della strip che vogliamo modificare) e 2 WRITE (nuova strip di parità e la strip modificata).
La additive parity avrebbe richieste 3 READ (la strip 0, 1 e 3, ovvero tutte le strip escluse quella da modificare) e 2 WRITE (nuova strip di parità e la strip modificata).
Applicazione della subtractive parity:
10110100 \oplus\\ 01001011 \oplus\\ 00011010 \oplus\\ ------\\11100101
Come già spiegato prima questa operazione necessità di 2 READ e 2 WRITE.
Il contenuto dei dischi è il seguente:
Disco 0 | Disco 1 | Disco 2 | Disco 3 | Disco 4 |
---|---|---|---|---|
01000101 | 00000110 | 01001011 | 11101101 | (11100101) |
11000111 | 10000101 | 01110111 | (01100000) | 01010101 |
Esercizio 1.11:
Al driver del disco arrivano, nell'ordine specificato, le richieste di cilindri 11, 23, 21, 3, 41, 7, e 39. Ogni operazione di seek tra due cilindri consecutivi (track-to-track seek time) impiega 6msec. Specificare l'ordine di visita dei vari cilindri e il tempo totale di seek che si ottengono utilizzando i seguenti algoritmi:
-
First-Come, First-Served (FCFS)
-
Shortest-Seek First (SSF)
-
LOOK
-
C-LOOK
In tutti i casi, il braccio del disco è inizialmente posizionato sul cilindro 31. Per gli algoritmi LOOK e varianti, la direzione iniziale è DOWN.
Risposta:
FCFS:
Ordine di visita: 11, 23, 21, 3, 41, 7, 39.
Numero totale di cilindri: |31-11|+|11-23|+|23-21|+|21-3|+|3-41|+|41-7|+|7-39| = 156
Tempo totale di seek: 156 \times 6msec = 936msec
SSF:
Ordine di visita: 39, 41, 23, 21, 11, 7, 3.
Anche 23, 21, 11, 7, 3, 39, 41 andava bene, entrambi inizialmente hanno una differenza di 8 cilindri.
Numero totale di cilindri: |31-39|+|39-41|+|41-23|+|23-21|+|21-11|+|11-7|+|7-3| = 48
Tempo totale di seek: 48 \times 6msec = 288msec
LOOK (down):
Ordine di visita: 23, 21, 11, 7, 3, 39, 41.
Numero totale di cilindri: |31-23|+|23-21|+|21-11|+|11-7|+|7-3|+|3-39|+|39-41| = 66
Tempo totale di seek: 66\times6 = 396msec
C-LOOK (down):
Ordine di visita: 23, 21, 11, 7, 3, 41, 39.
Numero totale di cilindri: |31-23|+|23-21|+|21-11|+|11-7|+|7-3|+|3-41|+|41-39|= 68
Tempo totale di seek: 68\times6 = 408