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