Skip to content
Snippets Groups Projects

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:

  1. Scrittura della sequenza di byte: 01000101, 00000110, 10110100, 11101101, 11000111, 10000101, 01110111, 01010101

  2. Lettura secondo e settimo byte di dati

  3. 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:

  1. First-Come, First-Served (FCFS)

  2. Shortest-Seek First (SSF)

  3. LOOK

  4. 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