Skip to content
Snippets Groups Projects
Commit 70f36d83 authored by Gianluca's avatar Gianluca
Browse files

EserciziExtra fatti fino a dove siamo arrivati

parent f9ee45df
Branches
No related tags found
No related merge requests found
......@@ -38,25 +38,26 @@ e delle liste corrispondenti agli slot n. 0, 1 e 6 nelle seguenti situazioni (og
situazione parte dallo stato della cache della situazione precedente):
1. dopo l'accesso ai blocchi aventi i seguenti indirizzi
(l'ordine di accesso ai blocchi è
da sinistra a destra):
(l'ordine di accesso ai blocchi è
da sinistra a destra):
[226, 402, 280, 66, 246, 250, 435, 235, 27, 478, 112, 444, 269,
419, 430];
419, 430];
2. dopo l'accesso al blocco avente indirizzo: 478;
3. dopo l'accesso al blocco avente indirizzo: 411.
Per ogni punto (1), (2) e (3), si riportino le seguenti informazioni:
- la lista corrispondente allo slot numero k
(per ogni slot k richiesto dall'esercizio);
usare la notazione: Hashtable[k]: [b1, b2, ...]
(per ogni slot k richiesto dall'esercizio);
usare la notazione: Hashtable[k]: [b1, b2, ...]
- lista LRU; usare la notazione: LRU list: [b1, b2, ...]
- elementi LRU e MRU; usare la notazione: LRU: b1, MRU: b2
dove b1, b2, ... sono indirizzi di blocchi. Si usi [ ] per indicare la lista vuota.
dove b1, b2, ... sono indirizzi di blocchi. Si usi [ ] per indicare la lista vuota.
_L'assenza delle suddette informazioni o l'uso di una notazione diversa da quella
indicata equivale a subire una penalizzazione nel punteggio._
......@@ -67,57 +68,58 @@ indicata equivale a subire una penalizzazione nel punteggio._
Si consideri un file system inizialmente composto dai file [0, 1, 2, 3] e si supponga
che si effettuino le seguenti modifiche:
| Giorno | File modificati/aggiunti |
| -------| -------------------------|
| 0 | [4, 5, 6, 7] |
| 1 | [1, 8, 9, 10]|
| 2 | [11, 12, 13] |
|3 | []|
|4 |[14, 15] |
| 5 | [16, 17, 18, 19] |
| 6 | [0, 6, 9, 20] |
| 7 | [8] |
|:------:| ------------------------ |
| 0 | [4, 5, 6, 7] |
| 1 | [1, 8, 9, 10] |
| 2 | [11, 12, 13] |
| 3 | [] |
| 4 | [14, 15] |
| 5 | [16, 17, 18, 19] |
| 6 | [0, 6, 9, 20] |
| 7 | [8] |
Supponendo:
- di effettuare il backup ogni giorno,
- di eseguire il backup totale ogni 6
giorni a partire dal giorno 0 (cioè, il giorno 0,
poi il giorno 6, ...),
giorni a partire dal giorno 0 (cioè, il giorno 0,
poi il giorno 6, ...),
- che ogni backup totale contenga tutti
i file presenti inizialmente nel sistema o
aggiunti successivamente dal giorno 0 sino al giorno della sua esecuzione, e
i file presenti inizialmente nel sistema o
aggiunti successivamente dal giorno 0 sino al giorno della sua esecuzione, e
- che tutte le modifiche/aggiunte mostrate nello scenario sopra riportato
avvengano prima di effettuare un backup,
avvengano prima di effettuare un backup,
svolgere i seguenti punti:
1. Mostrare il contenuto dei BACKUP
DIFFERENZIALI effettuati nei giorni [3, 4, 7] dello
scenario sopra riportato.
DIFFERENZIALI effettuati nei giorni [3, 4, 7] dello
scenario sopra riportato.
2. Elencare i backup usati per il ripristino dei file fino al giorno
4 (incluso) nella
situazione del punto 1.
4 (incluso) nella
situazione del punto 1.
3. Supponendo che il backup al giorno 2 diventi
inutilizzabile, è possibile effettuare il
ripristino del punto 2? Motivare la risposta.
inutilizzabile, è possibile effettuare il
ripristino del punto 2? Motivare la risposta.
4. Mostrare il contenuto dei BACKUP INCREMENTALI
effettuati nei giorni [3, 4, 7] dello
scenario sopra riportato.
effettuati nei giorni [3, 4, 7] dello
scenario sopra riportato.
5. Elencare i backup usati per il ripristino dei
file fino al giorno 4 (incluso) nella
situazione del punto 4.
file fino al giorno 4 (incluso) nella
situazione del punto 4.
6. Supponendo che il backup al giorno 2 diventi inutilizzabile,
è possibile effettuare il
ripristino del punto 5? Motivare la risposta.
è possibile effettuare il
ripristino del punto 5? Motivare la risposta.
Per i punti 1 e 4, si usi la seguente notazione:
Giorno X: [file1, file2, ...], cioè il
......@@ -146,25 +148,25 @@ numerino a partire da 0 sia i dischi sia le strip (non farlo equivale a subire u
penalizzazione nel punteggio).
1. Si riporti il contenuto dei dischi n. 4, 5, 6 dopo aver
scritto la seguente sequenza di
byte: b[0]=11001110, b[1]=00101100, b[2]=01111011, b[3]=00100100, b[4]=01100000,
b[5]=10110100, b[6]=01000110, b[7]=10010011, b[8]=00110101, b[9]=10100011,
b[10]=10111111, b[11]=01011101.
Si indichino i vari byte con la notazione "b[i]"
(con i=0,1,...,11) e non con la sequenza
di bit corrispondente, tranne per gli eventuali byte di
parità che invece devono essere
calcolati e indicati esplicitamente
(non farlo equivale a subire una penalizzazione nel
punteggio).
scritto la seguente sequenza di
byte: b[0]=11001110, b[1]=00101100, b[2]=01111011, b[3]=00100100, b[4]=01100000,
b[5]=10110100, b[6]=01000110, b[7]=10010011, b[8]=00110101, b[9]=10100011,
b[10]=10111111, b[11]=01011101.
Si indichino i vari byte con la notazione "b[i]"
(con i=0,1,...,11) e non con la sequenza
di bit corrispondente, tranne per gli eventuali byte di
parità che invece devono essere
calcolati e indicati esplicitamente
(non farlo equivale a subire una penalizzazione nel
punteggio).
2. si riporti il numero di READ, indicando quante di queste sono effettuate in
parallelo, quando si effettua la lettura dei byte b[1], b[2], b[3], b[8].
parallelo, quando si effettua la lettura dei byte b[1], b[2], b[3], b[8].
3. si dica quale metodo per il calcolo della parità
(additiva o sottrattiva) risulti essere
più efficiente (o se è indifferente), giustificando la risposta,
quando si modifica il byte
b[1] da 00101100 a 10100011, b[3] da 00100100 a 11011011, b[5] da 10110100 a
01001011
(additiva o sottrattiva) risulti essere
più efficiente (o se è indifferente), giustificando la risposta,
quando si modifica il byte
b[1] da 00101100 a 10100011, b[3] da 00100100 a 11011011, b[5] da 10110100 a
01001011
**Risposta:**
......@@ -181,9 +183,9 @@ b[5] 10110100 =
01101001
| Disco 0 | Disco 1 | Disco 2 | Disco 3 | Disco 4 | Disco 5 | Disco 6 |
| --- | --- | --- | --- | --- | ----- | --- |
|11001110 | 00101100| 01111011 | 00100100 | 01100000 | 10110100 | _01101001_|
| Disco 0 | Disco 1 | Disco 2 | Disco 3 | Disco 4 | Disco 5 | Disco 6 |
| -------- | -------- | -------- | -------- | -------- | -------- | ---------- |
| 11001110 | 00101100 | 01111011 | 00100100 | 01100000 | 10110100 | _01101001_ |
Parity Stripe 1:
......@@ -196,10 +198,10 @@ b[11]=01011101 =
10100001
| Disco 0 | Disco 1 | Disco 2 | Disco 3 | Disco 4 | Disco 5 | Disco 6 |
| --- | --- | --- | --- | --- | ----- | --- |
|11001110 | 00101100| 01111011 | 00100100 | 01100000 | 10110100 | _01101001_|
|01000110 | 10010011| 00110101 | 10100011 | 10111111 | _10100001_ | 01011101 |
| Disco 0 | Disco 1 | Disco 2 | Disco 3 | Disco 4 | Disco 5 | Disco 6 |
| -------- | -------- | -------- | -------- | -------- | ---------- | ---------- |
| 11001110 | 00101100 | 01111011 | 00100100 | 01100000 | 10110100 | _01101001_ |
| 01000110 | 10010011 | 00110101 | 10100011 | 10111111 | _10100001_ | 01011101 |
Punto 2:
......
File added
# 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 | <mark style="background-color: green">10110100</mark> | 11101101 | (00011010) |
| 11000111 | 10000101 | 01110111 | (01100000) | <mark style="background-color: green">01010101</mark> |
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 | <mark>01001011</mark> | 11101101 | <mark>(11100101)</mark> |
| 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$
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment