45400d72b02732591fe525d4270e9195f382aa50
sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-45-25.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-45-25.png differ |
sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-46-12.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-46-12.png differ |
sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-50-42.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-50-42.png differ |
sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-51-09.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-51-09.png differ |
sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-51-41.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-51-41.png differ |
sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-58-26.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_11-58-26.png differ |
sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_12-00-48.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_12-00-48.png differ |
sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_12-11-48.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/gestione_risorse_deadlock_2026-03-11_12-11-48.png differ |
sistemi/s02/gestione_risorse_deadlock.md
| ... | ... | @@ -0,0 +1,109 @@ |
| 1 | +## Algoritmo del banchiere |
|
| 2 | + |
|
| 3 | +- un algoritmo per evitare lo stallo sviluppato da Dijkstra (1965) |
|
| 4 | +- il nome deriva dal metodo utilizzato da un ipotetico banchiere di provincia che gestisce un gruppo di clienti a cui ha concesso del credito; non tutti i clienti avranno bisogno dello stesso credito simultaneamente |
|
| 5 | + |
|
| 6 | +### Descrizione |
|
| 7 | + |
|
| 8 | +- un banchiere desidera condividere un capitale (fisso) con un numero (prefissato) di clienti |
|
| 9 | + - per Dijkstra l'"unità di misura" erano fiorini olandesi |
|
| 10 | +- ogni cliente specifica in anticipo la sua necessità massima di denaro |
|
| 11 | + - che ovviamente non deve superare il capitale del banchiere |
|
| 12 | +- i clienti fanno due tipi di transazioni |
|
| 13 | + - richieste di prestito |
|
| 14 | + - restituzioni |
|
| 15 | +- il denaro prestato ad ogni cliente non può mai eccedere la necessità massima specificata a priori |
|
| 16 | +- ogni cliente può fare richieste multiple, fino al massimo importo specificato |
|
| 17 | +- una volta che le richieste sono state accolte e il denaro è stato ottenuto deve garantire la restituzione in un tempo finito |
|
| 18 | + |
|
| 19 | +### Metodo di funzionamento |
|
| 20 | + |
|
| 21 | +Il banchiere deve essere in ogni istante in grado di soddisfare tutte le richieste dei clienti, o concedendo immediatamente il prestito oppure comunque facendo loro aspettare la disponibilità del denaro in un tempo finito |
|
| 22 | + |
|
| 23 | +#### Dati |
|
| 24 | + |
|
| 25 | +- N: num clienti |
|
| 26 | +- IC: capitale iniziale |
|
| 27 | +- c_i: limite di credito del cliente i (c_i <=IC) |
|
| 28 | +- n_i = c_i-p_i credito residuo del cliente i |
|
| 29 | +- COH= IC - $\sum_{i=1}^N p_i$ saldo di cassa |
|
| 30 | + |
|
| 31 | +#### Definzione: Stato SAFE |
|
| 32 | + |
|
| 33 | +sia s una permutazione dei valori 1...N |
|
| 34 | + |
|
| 35 | +- Esempio: N=4 s=1,2,3,4,2 |
|
| 36 | +- indichiamo con s(i) l'iesmia posizione della sequenza |
|
| 37 | + |
|
| 38 | +si calcoli il vettore avail come segue |
|
| 39 | + |
|
| 40 | +$$ |
|
| 41 | +avail[1]= COH |
|
| 42 | +avail[j+1] = avail[j] + p_{s(j)} |
|
| 43 | +$$ |
|
| 44 | + |
|
| 45 | +con $j=1...N-1$ |
|
| 46 | + |
|
| 47 | +Nota: lo stato UNSAFE è condizione necessaria ma non sufficiente per avere deadlock (i.e., un sistema in uno stato UNSAFE può evolvere senza procurare alcun deadlock) |
|
| 48 | + |
|
| 49 | + |
|
| 50 | + |
|
| 51 | + |
|
| 52 | + |
|
| 53 | +sembra un deadlock ma il realta' il proc 3 ha ricevuto tutti i "soldi" che doveva ricevere e questo significa che puo darli indietro. La sequenza 3,2,1,4,5 esegue tutti i prestiti a compimento |
|
| 54 | + |
|
| 55 | +#### Regola pratica (per il banchiere a singola valuta) |
|
| 56 | + |
|
| 57 | +lo stato SAFE può essere verificato usando la sequenza che ordina in modo crescente i valori di ni. |
|
| 58 | +nfatti, se esiste una sequenza di verificare la safety di uno stato, sicuramente anche la sequenza che ordina i valori di ni consente di fare altrettanto |
|
| 59 | + |
|
| 60 | + |
|
| 61 | +#### Esempio stato unsafe |
|
| 62 | + |
|
| 63 | + |
|
| 64 | + |
|
| 65 | + |
|
| 66 | + |
|
| 67 | +### Banchiere multivaluta |
|
| 68 | + |
|
| 69 | +#### Dati |
|
| 70 | + |
|
| 71 | + |
|
| 72 | + |
|
| 73 | +#### Definizione stato SAFE |
|
| 74 | + |
|
| 75 | + |
|
| 76 | + |
|
| 77 | +Problema: |
|
| 78 | + |
|
| 79 | +- la regola di ordinare i processi secondo i valori di ni non è applicabile |
|
| 80 | +- l'ordine può essere in generale diverso fra le diverse valute gestite dal banchiere |
|
| 81 | + |
|
| 82 | +Soluzione: |
|
| 83 | + |
|
| 84 | +- si può creare la sequenza procedendo passo passo aggiungendo un processo a caso fra quelli completamente soddisfacibili |
|
| 85 | +- ovvero, al passo j si sceglie quelli per cui ns(j) ≤ avail[j] |
|
| 86 | + |
|
| 87 | +### Teorema |
|
| 88 | + |
|
| 89 | +Se durante la costruzione della sequenza s si giunge ad un punto in cui nessun processo risulta soddisfacibile, lo stato non è SAFE, i.e. non esiste alcuna sequenza che consenta di soddisfare tutti i processi |
|
| 90 | + |
|
| 91 | +Dimostrazione per assurdo: |
|
| 92 | + |
|
| 93 | +supponiamo che lo stato sia SAFE, ovvero che esista la sequenza che consente di soddisfare tutti i processi |
|
| 94 | + |
|
| 95 | +sia C la sequenza interrotta e C' la sequenza che porta allo stato SAFE |
|
| 96 | + |
|
| 97 | + |
|
| 98 | +## ALgoritmo dello struzzo |
|
| 99 | + |
|
| 100 | +nascondere la testa sotto la sabbia, ovvero fare finta che i deadlock non si possano mai verificare |
|
| 101 | + |
|
| 102 | +Motivazioni: |
|
| 103 | + |
|
| 104 | +- dal punto di vista ingegneristico, il costo di evitare i deadlock può essere troppo elevato |
|
| 105 | + |
|
| 106 | +Nota: |
|
| 107 | + |
|
| 108 | +- è la soluzione più adottata nei sistemi Unix |
|
| 109 | +- è usata anche nelle JVM |