diff --git a/Sistemi_Operativi_2/Esame/.Esame1.autosave.xopp b/Sistemi_Operativi_2/Esame/.Esame1.autosave.xopp new file mode 100644 index 0000000000000000000000000000000000000000..1a852cf0da8ab79fd907609255df5fa3555d9771 Binary files /dev/null and b/Sistemi_Operativi_2/Esame/.Esame1.autosave.xopp differ diff --git a/Sistemi_Operativi_2/Esame/Esame1.xopp b/Sistemi_Operativi_2/Esame/Esame1.xopp new file mode 100644 index 0000000000000000000000000000000000000000..3ac728e1a9a7d239f136f5dee1e51adb3fa4990b Binary files /dev/null and b/Sistemi_Operativi_2/Esame/Esame1.xopp differ diff --git a/Sistemi_Operativi_2/Esame/EsempioEsame.md b/Sistemi_Operativi_2/Esame/EsempioEsame.md new file mode 100644 index 0000000000000000000000000000000000000000..75663afc250a80df7e999c23e08ecc9e71cab331 --- /dev/null +++ b/Sistemi_Operativi_2/Esame/EsempioEsame.md @@ -0,0 +1,238 @@ +# Esami Sistemi Operativi 2 + +## Esempio Esame + +**Domanda 1:** + +Si calcoli il valore del sector interleaving per un disco caratterizzato da una +velocità rotazionale di 4200 RPM e 1600 settori per traccia, e un tempo di +trasferimento di un settore in memoria (incluso il tempo di controllo dell'ECC) +di 60 microsecondi. + +_Nella risposta occorre mostrare anche i passaggi intermedi che portano al +risultato finale._ + +**Risposta:** + +$T_r \text{ (Tempo singola rotazione)} = \frac{60s}{4200 RPM} = 0,014s$ + +$T_s \text{ (Tempo settore sotto la testina)} = +\frac{T_r}{\text{num settori}} = \frac{0,014s}{1600} = 8.928 \mu s$ + +$\text{Sector Leaving} = \frac{\text{Tempo trasferimento}}{T_s} += 6,72 \approx 7 \text{ settori}$ + +**Domanda 2:** + +Si consideri la cache di un file system che utilizza la tecnica di hashing per +velocizzare il reperimento dei blocchi in essa presenti, la politica LRU per il +rimpiazzamento dei blocchi, e abbia una capacità pari a 15 blocchi. +Si ipotizzi inoltre che tale cache preveda l'uso di 9 "slot" per la tabella di hash +(indirizzati da 0 a 8) e che la funzione di hashing utilizzata +sia h(B) = B mod 9 dove B è +l'indirizzo del blocco da memorizzare nella cache. + +Supponendo che la cache sia inizialmente vuota, si riporti +il contenuto della lista LRU, +e delle liste corrispondenti agli slot n. 0, 1 e 6 nelle seguenti situazioni (ogni +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): + + [226, 402, 280, 66, 246, 250, 435, 235, 27, 478, 112, 444, 269, + 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, ...] + +- 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. + +_L'assenza delle suddette informazioni o l'uso di una notazione diversa da quella +indicata equivale a subire una penalizzazione nel punteggio._ + +**Risposta:** + +**Domanda 3:** + +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] | + +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, ...), + +- 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 + +- che tutte le modifiche/aggiunte mostrate nello scenario sopra riportato +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. + +2. Elencare i backup usati per il ripristino dei file fino al giorno +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. + +4. Mostrare il contenuto dei BACKUP INCREMENTALI +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. + +6. Supponendo che il backup al giorno 2 diventi inutilizzabile, +è 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 +backup al giorno X contiene i file file1, file2, ... +Per i punti 2 e 5, si usi la seguente notazione: +[giornoX, giornoY, ...], dove l'ordine +del ripristino è da sinistra verso destra +(cioè, il ripristino del backup al giornoX viene +effettuato prima di quello al giornoY). + +_L'assenza delle suddette informazioni o l'uso di una notazione diversa da quella +indicata equivale a subire una penalizzazione nel punteggio._ + +**Risposta:** + +**Domanda 4:** + +Si consideri un sistema RAID livello 5 costituito da 7 dischi identici (inizialmente +vuoti) e con blocchi (strip) da 1 byte, e si supponga di +effettuare, una dopo l'altra, le +operazioni di seguito indicate dove, +per ciascuna operazione, il controller RAID riceve i +comandi di lettura/scrittura come un'unica richiesta. +Nel formulare le risposte, si +numerino a partire da 0 sia i dischi sia le strip (non farlo equivale a subire una +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). +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]. +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 + +**Risposta:** + +Punto 1: + +Parity Stripe 0: + +b[0] 11001110 $\bigoplus$\ +b[1] 00101100 $\bigoplus$\ +b[2] 01111011 $\bigoplus$\ +b[3] 00100100 $\bigoplus$\ +b[4] 01100000 $\bigoplus$\ +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_| + +Parity Stripe 1: + +b[6]= 01000110 $\bigoplus$\ +b[7]= 10010011 $\bigoplus$\ +b[8]= 00110101 $\bigoplus$\ +b[9]= 10100011 $\bigoplus$\ +b[10]=10111111 $\bigoplus$\ +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 | + +Punto 2: + +2 read necessarie. + +La prima read in parallelo per i byte b[0] b[1] e b[2], +la seconda per b[8]. +Non si possono effettuare tutte in una singola read perché il contenuto +di b[8] è nello stesso disco di b[2]. + +Punto 3: + +b[1] +00101100 -> 10100011 + +Sottrattiva: +old b[1] $\bigoplus$\ +new b[1] $\bigoplus$\ +parity stripe 0 = + +00101100 $\bigoplus$\ +10100011 $\bigoplus$\ +01101001 = + +11100110 + +In questo modo otteniamo la nuova strip di parità . + +La stessa cosa è valida per b[3] e b[5] perché sono tutti +cambiamenti che sono al di sotto del punto di crossover. + +La parity addittiva avrebbe fatto la lettura di tutte le strip della stripe, +quindi in questo caso di b[0], b[2], b[3], b[4] e b[5], per un totale di 5 letture +e due scritture. + +Invece la parity sotrrattiva usa solo due letture e due scritture.