diff --git a/Sistemi_Operativi_2/Esame/EsempioEsame.md b/Sistemi_Operativi_2/Esame/EsempioEsame.md index 205103a79bd0d1bfc8eb440c6c3058c136512ce0..43e927ef9513afa6508a40714142e34d47ddd10b 100644 --- a/Sistemi_Operativi_2/Esame/EsempioEsame.md +++ b/Sistemi_Operativi_2/Esame/EsempioEsame.md @@ -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: diff --git a/Sistemi_Operativi_2/Esame/EsempioEsame.pdf b/Sistemi_Operativi_2/Esame/EsempioEsame.pdf new file mode 100644 index 0000000000000000000000000000000000000000..12322f935c443ceda2cc0349301c936dbd15bdc5 Binary files /dev/null and b/Sistemi_Operativi_2/Esame/EsempioEsame.pdf differ diff --git a/Sistemi_Operativi_2/Esercizi_Teoria/EserciziExtra.md b/Sistemi_Operativi_2/Esercizi_Teoria/EserciziExtra.md new file mode 100644 index 0000000000000000000000000000000000000000..746a751b13956d139465189152ea923920c4d516 --- /dev/null +++ b/Sistemi_Operativi_2/Esercizi_Teoria/EserciziExtra.md @@ -0,0 +1,151 @@ +# 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$ diff --git a/Sistemi_Operativi_2/Esercizi_Teoria/EserciziExtra.pdf b/Sistemi_Operativi_2/Esercizi_Teoria/EserciziExtra.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4626bcb335430457b4188f5a7c2179be5a037e34 Binary files /dev/null and b/Sistemi_Operativi_2/Esercizi_Teoria/EserciziExtra.pdf differ