9ce90b4accbf9aaebfd0fbee501f3be6cb2d29fb
sistemi/s02/20260305.md
| ... | ... | @@ -0,0 +1,460 @@ |
| 1 | +# Scheduling |
|
| 2 | + |
|
| 3 | +## Scheduling round robin |
|
| 4 | + |
|
| 5 | +e'basato sul concetto di quanto di tempo (time slice) |
|
| 6 | + |
|
| 7 | +- un process non puo'essere in esecuzione per un tempo superiore alla durata del quanto |
|
| 8 | + |
|
| 9 | +Implementazione (1) |
|
| 10 | + |
|
| 11 | +- l'insieme dei processi pronti è organizzato come una coda |
|
| 12 | +- due possibilità: |
|
| 13 | + - un processo può lasciare il processore volontariamente, in seguito ad un'operazione di I/O |
|
| 14 | + - un processo può esaurire il suo quanto di tempo senza completare il suo CPU burst, nel qual caso viene aggiunto in fondo alla coda dei processi pronti |
|
| 15 | +- in entrambi i casi, il prossimo processo da esegure è il primo della coda dei processi pronti |
|
| 16 | + |
|
| 17 | +La durata del quanto di tempo è un parametro critico del sistema |
|
| 18 | + |
|
| 19 | +- se il quanto di tempo è breve, il sistema è meno efficiente perchè deve cambiare il processo attivo più spesso |
|
| 20 | +- se il quanto è lungo, in presenza di numerosi processi pronti ci sono lunghi periodi di inattività di ogni singolo processo, |
|
| 21 | +- in sistemi interattivi, questo può essere fastidioso per gli utenti |
|
| 22 | + |
|
| 23 | +Implementazione (2) |
|
| 24 | + |
|
| 25 | +- è necessario che l'hardware fornisca un timer (interval timer) che agisca come "sveglia" del processore |
|
| 26 | +- il timer è un dispositivo che, attivito con un preciso valore di tempo, è in grado di fornire un interrupt allo scadere del tempo prefissato |
|
| 27 | +- il timer viene interfacciato come se fosse un'unita di I/O |
|
| 28 | + |
|
| 29 | + |
|
| 30 | + |
|
| 31 | +round robin e' troppo democratico, tutti i processi hanno la stessa priorita' (in realta'alcune task sono piu importanti di altre) |
|
| 32 | + |
|
| 33 | +## Scheduling a priorita' |
|
| 34 | + |
|
| 35 | +Ogni processo e' associato a una specifica priorita' |
|
| 36 | +lo scheduler sceglie il processo pronto a priorita' piu'alta |
|
| 37 | +la system call per cambiare priorita' al processo si chiama `nice` (per abbassare la priorita') |
|
| 38 | + |
|
| 39 | +Le priorità possono essere: |
|
| 40 | + |
|
| 41 | +- definite dal sistema operativo |
|
| 42 | + - vengono utilizzate una o più quantità misurabili per calcolare la priorità di un processo |
|
| 43 | + - esempio: SJF è un sistema basato su priorità (priorita' piu alta a processi che finiscono prima) |
|
| 44 | +- definite esternamente |
|
| 45 | + - le priorità non vengono definite dal sistema operativo, ma vengono imposte dal livello utente |
|
| 46 | + |
|
| 47 | +**Tipi di priorita**: |
|
| 48 | + |
|
| 49 | +- Priorità statica: |
|
| 50 | + - la priorità non cambia durante la vita di un processo |
|
| 51 | + - problema: processi a bassa priorità possono essere posti in starvation da processi ad alta priorità |
|
| 52 | +- Priorità dinamica |
|
| 53 | + - la priorità può variare durante la vita di un processo |
|
| 54 | + - è possibile utilizzare metodologie di priorità dinamica per evitare starvation |
|
| 55 | + |
|
| 56 | +### Priorità basata su aging: |
|
| 57 | + |
|
| 58 | +- incremento graduale della priorita dei processi in attesa |
|
| 59 | +- nessun processo rimarra'in attesa per un tempo indefinito (prima o poi il proc raggiungera'la priorita' massima) |
|
| 60 | + |
|
| 61 | +### Classi di priorita' |
|
| 62 | + |
|
| 63 | +- e' possibile creare diverse classi di processi con caratteristiche sismili e assegnare ad ogni classe specifiche priorita' |
|
| 64 | +- la coda ready viene quindi scomposta in tante "sottocode", una per ogni classe di processi |
|
| 65 | + |
|
| 66 | +Algoritmo: |
|
| 67 | + |
|
| 68 | +- uno scheduler a classi di priorità seleziona il processo da eseguire fra quelli pronti della classe a priorità massima che contiene processi |
|
| 69 | + |
|
| 70 | +### Scheduling Multilivello |
|
| 71 | + |
|
| 72 | +- all'interno di ogni classe di processi, è possibile utilizzare una politica specifica adatta alle caratteristiche della classe |
|
| 73 | +- uno scheduler multilivello cerca prima la classe di priorità massima che ha almeno un processo ready |
|
| 74 | +- sceglie poi il processo da porre in stato running coerentemente con la politica specifica della classe |
|
| 75 | + |
|
| 76 | +Esempio: |
|
| 77 | +Quattro classi di processi (priorità decrescente): |
|
| 78 | + |
|
| 79 | +- processi server (priorità statica) |
|
| 80 | +- processi utente interattivi (round-robin) |
|
| 81 | +- altri processi utente (FIFO) |
|
| 82 | +- il processo vuoto (FIFO banale) |
|
| 83 | + |
|
| 84 | +nell'ultimo livello c'e' il processo vuoto (serve per far aspettare a) |
|
| 85 | + |
|
| 86 | +### Scheduling Real-Time |
|
| 87 | + |
|
| 88 | +- la correttezza dell'esecuzione non dipende solamente dal valore del risultato, ma anche dall'istante temporale nel quale il risultato viene emesso |
|
| 89 | + |
|
| 90 | +Hard real-time |
|
| 91 | + |
|
| 92 | +- le deadline di esecuzione dei programmi non devono essere superate in nessun caso |
|
| 93 | +- sistemi di controllo nei velivoli, centrali nucleari o per la cura intensiva dei malati |
|
| 94 | + |
|
| 95 | +Soft real-time |
|
| 96 | + |
|
| 97 | +- errori occasionali sono tollerabili |
|
| 98 | +- ricostruzione di segnali audio-video, transazioni interattive |
|
| 99 | + |
|
| 100 | +Processi periodici |
|
| 101 | + |
|
| 102 | +- sono periodici i processi che vengono riattivati con una cadenzaregolare (periodo) |
|
| 103 | +- esempi: controllo assetto dei velivoli, basato su rilevazione periodica dei parametri di volo |
|
| 104 | +- Processi aperiodici |
|
| 105 | +- i processi che vengono scatenati da un evento sporadico, ad esempio l'allarme di un rilevatore di pericolo |
|
| 106 | + |
|
| 107 | +Rate Monotonic: |
|
| 108 | + |
|
| 109 | +- è una politica di scheduling, valida alle seguenti condizioni |
|
| 110 | +- ogni processo periodico deve completare entro il suo periodo |
|
| 111 | +- tutti i processi sono indipendenti |
|
| 112 | +- la preemption avviene istantaneamente e senza overhead |
|
| 113 | +- viene assegnata staticamente una priorità a ogni processo |
|
| 114 | +- processi con frequenza più alta (i.e. periodo più corto) hanno prioritàpiù alta |
|
| 115 | +- ad ogni istante, viene eseguito il processo con priorità più alta (facendo preemption se necessario) |
|
| 116 | + |
|
| 117 | +Earliest Deadline First: |
|
| 118 | + |
|
| 119 | +- è una politica di scheduling per processi periodici real-time |
|
| 120 | +- viene scelto di volta in volta il processo che ha la deadline più prossima |
|
| 121 | +- viene detto "a priorità dinamica" perchè la priorità relativa di due processi varia in momenti diversi |
|
| 122 | + |
|
| 123 | +# Modulo 4 gestore risorse e deadlock |
|
| 124 | + |
|
| 125 | +## Risorse |
|
| 126 | + |
|
| 127 | +un sistema di elaborazione e' composto da un insieme di risorse da assegnare ai processi (es. memoria, stampanti, interfaccie di rete...) |
|
| 128 | + |
|
| 129 | +### classi di risorse |
|
| 130 | + |
|
| 131 | +Le risorse della stessa classe sono equivalenti |
|
| 132 | +es. byte di mem, stampanti dello stesso tipo |
|
| 133 | + |
|
| 134 | +Definizioni: |
|
| 135 | + |
|
| 136 | +- le risorse di una classe vengono dette istanze della classe |
|
| 137 | +- il numero di risorse in una classe viene detto molteplicità del tipo di risorsa |
|
| 138 | + |
|
| 139 | +> Nota: Un processo non può richiedere una specifica risorsa, ma solo una risorsa di una specifica classe (es. un proc puo chedere memoria ma non puo specificare quale banco di memoria vuole) |
|
| 140 | + |
|
| 141 | +### Assegnazione delle risorse |
|
| 142 | + |
|
| 143 | +Risorse ad assegnazione statica |
|
| 144 | + |
|
| 145 | +- avviene al momento della creazione del processo e rimane valida fino allaterminazione |
|
| 146 | +- esempi: descrittori di processi, aree di memoria (in alcuni casi) |
|
| 147 | + |
|
| 148 | +Risorse ad assegnazione dinamica |
|
| 149 | + |
|
| 150 | +- i processi |
|
| 151 | + - richiedono le risorse durante la loro esistenza |
|
| 152 | + - le utilizzano una volta ottenute |
|
| 153 | + - le rilasciano quando non più necessarie (eventualmente alla terminazione del processo |
|
| 154 | +- esempi: periferiche di I/O, aree di memoria (in alcuni casi) |
|
| 155 | + |
|
| 156 | +### Tipi di richieste |
|
| 157 | + |
|
| 158 | +Richiesta singola: |
|
| 159 | + |
|
| 160 | +- si riferisce a una singola risorsa di una classe definita |
|
| 161 | +- è il caso normale |
|
| 162 | + |
|
| 163 | +Richiesta multipla |
|
| 164 | + |
|
| 165 | +- si riferisce a una o più classi, e per ogni classe, ad una o più risorse |
|
| 166 | +- deve essere soddisfatta integralmente |
|
| 167 | + |
|
| 168 | +Richiesta bloccante |
|
| 169 | + |
|
| 170 | +- il processo richiedente si sospende se non ottiene immediatamente l'assegnazione |
|
| 171 | +- la richiesta rimane pendente e viene riconsiderata dalla funzione di gestione ad ogni rilascio |
|
| 172 | + |
|
| 173 | +Richiesta non bloccante |
|
| 174 | + |
|
| 175 | +- la mancata assegnazione viene notificata al processo richiedente, senza provocare la sospensione |
|
| 176 | + |
|
| 177 | +Risorse non condivisibili (seriali) |
|
| 178 | + |
|
| 179 | +- una singola risorsa non può essere assegnata a più processi contemporaneamente |
|
| 180 | +- esempi: |
|
| 181 | + (i processori, le sezioni critiche, le stampanti) |
|
| 182 | + |
|
| 183 | +- Risorse condivisibili |
|
| 184 | +- esempio: (file di sola lettura) |
|
| 185 | + |
|
| 186 | +### Risorse prerilasciabili ("preemptable") |
|
| 187 | + |
|
| 188 | +una risorsa si dice prerilasciabile se la funzione di gestione può sottrarla ad un processo prima che questo l'abbia effettivamente rilasciata |
|
| 189 | + |
|
| 190 | +Meccanismo di gestione: |
|
| 191 | + |
|
| 192 | +- il processo che subisce il prerilascio deve sospendersi |
|
| 193 | +- la risorsa prerilasciata sarà successivamente restituita al processo |
|
| 194 | + |
|
| 195 | +Una risorsa è prerilasciabile: |
|
| 196 | + |
|
| 197 | +- se il suo stato non si modifica durante l'utilizzo |
|
| 198 | +- oppure il suo stato può essere facilmente salvato e ripristinato |
|
| 199 | + |
|
| 200 | +Esempi: |
|
| 201 | + |
|
| 202 | +- processore |
|
| 203 | +- blocchi o partizioni di memoria (nel caso di assegnazione dinamica) |
|
| 204 | + |
|
| 205 | +### Risorse non prerilasciabili |
|
| 206 | + |
|
| 207 | +- la funzione di gestione non può sottrarle al processo al quale sono assegnate |
|
| 208 | +- sono non prerilasciabili le risorse il cui stato non può essere salvato e ripristinato |
|
| 209 | + |
|
| 210 | +Esempi |
|
| 211 | + |
|
| 212 | +- stampanti |
|
| 213 | +- classi di sezioni critiche |
|
| 214 | +- partizioni di memoria (nel caso di gestione statica) |
|
| 215 | + |
|
| 216 | +## Deadlock |
|
| 217 | + |
|
| 218 | +- i deadlock impediscono ai processi di terminare correttamente |
|
| 219 | +- le risorse bloccate in deadlock non possono essere utilizzati da altri processi |
|
| 220 | + |
|
| 221 | +### Condizioni per avere un deadlock |
|
| 222 | + |
|
| 223 | +Mutua esclusione / non condivisibili |
|
| 224 | + |
|
| 225 | +- le risorse coinvolte devono essere non condivisibili (seriali) |
|
| 226 | + |
|
| 227 | +Assenza di prerilascio |
|
| 228 | + |
|
| 229 | +- le risorse coinvolte non possono essere prerilasciate, ovvero devono essere rilasciate volontariamente dai processi che le controllano |
|
| 230 | + |
|
| 231 | +Richieste bloccanti (detta anche "hold and wait") |
|
| 232 | + |
|
| 233 | +- le richieste devono essere bloccanti, e un processo che ha già ottenuto risorse può chiederne ancora |
|
| 234 | + |
|
| 235 | +Attesa circolare |
|
| 236 | + |
|
| 237 | +- esiste una sequenza di processi P0,P1, ..., Pn, tali per cui P0 attende una risorsa controllata da P1, P1 attende una risorsa controllata da P2, ..., e Pn attende una risorsa controllata da P0 |
|
| 238 | + |
|
| 239 | +L'insieme di queste condizioni è necessario e sufficiente (devono valere tutte contemporaneamente affinché un deadlock si presenti nel sistema) |
|
| 240 | + |
|
| 241 | +### Grafo di Holt |
|
| 242 | + |
|
| 243 | +Caratteristiche: |
|
| 244 | + |
|
| 245 | +- è un grafo diretto |
|
| 246 | + - gli archi hanno una direzione |
|
| 247 | +- è un grafo bipartito |
|
| 248 | + - i nodi sono suddivisi in due sottoinsiemi e non esistono archi che collegano nodi dello stesso sottoinsieme |
|
| 249 | + - i sottoinsiemi sono risorse e processi |
|
| 250 | +- gli archi risorsa → processo indicano che la risorsa è assegnata al processo |
|
| 251 | +- gli archi processo → risorsa indicano che il processo ha richiesto la risorsa |
|
| 252 | + |
|
| 253 | +Esempio: |
|
| 254 | + |
|
| 255 | + |
|
| 256 | +Nel caso di classi contenenti più istanze di una risorsa l'insieme delle risorse è partizionato in classi e gli archi di richiesta sono diretti alla classe e non alla singola risorsa |
|
| 257 | + |
|
| 258 | +Rappresentazione: |
|
| 259 | + |
|
| 260 | +- i processi sono rappresentati da cerchi |
|
| 261 | +- le classi sono rappresentati come contenitori rettangolari |
|
| 262 | +- le risorse come punti all'interno delle classi |
|
| 263 | + |
|
| 264 | +> Nota: |
|
| 265 | +> |
|
| 266 | +> - non si rappresentano grafi di Holt con archi relativi a richieste che possono essere soddisfatte |
|
| 267 | +> - se esiste almeno un'istanza libera della risorsa richiesta, la risorsa viene assegnata |
|
| 268 | + |
|
| 269 | +Esempio |
|
| 270 | + |
|
| 271 | + |
|
| 272 | +Nell’implementazione il grafo di Holt viene memorizzato come grafo pesato (con pesi ai nodi risorsa e pesi sugli archi) |
|
| 273 | + |
|
| 274 | +sugli archi: |
|
| 275 | + |
|
| 276 | +- la molteplicità della richiesta (archi processo → classe) |
|
| 277 | +- la molteplicità dell'assegnazione(archi classe → processo) |
|
| 278 | + |
|
| 279 | +all'interno delle classi |
|
| 280 | + |
|
| 281 | +- il numero di risorse non ancora assegnate |
|
| 282 | + |
|
| 283 | + |
|
| 284 | + |
|
| 285 | +### Metodi di gestione dei deadlock |
|
| 286 | + |
|
| 287 | +Deadlock detection and recovery: |
|
| 288 | + |
|
| 289 | +- permettere al sistema di entrare in stati di deadlock; utilizzare un algoritmo per rilevare questo stato ed eventualmente eseguire un'azione di recovery |
|
| 290 | + |
|
| 291 | +Deadlock prevention / avoidance: |
|
| 292 | + |
|
| 293 | +- impedire al sistema di entrare in uno stato di deadlock |
|
| 294 | + |
|
| 295 | +### Deadlock detection |
|
| 296 | + |
|
| 297 | +Descrizione |
|
| 298 | + |
|
| 299 | +- mantenere aggiornato il grafo di Holt, registrando su di esso tutte le assegnazioni e le richieste di risorse |
|
| 300 | +- utilizzare il grafo di Holt al fine di riconoscere gli stati di deadlock |
|
| 301 | + |
|
| 302 | +Problema: come riconoscere uno stato di deadlock? |
|
| 303 | + |
|
| 304 | +#### Caso 1 - Una sola risorsa per classe |
|
| 305 | + |
|
| 306 | +**Teorema** |
|
| 307 | + |
|
| 308 | +- se le risorse sono a richiesta bloccante, non condivisibili e non prerilasciabili |
|
| 309 | +- lo stato è di deadlock se e solo se il grafo di Holt contiene un ciclo |
|
| 310 | + |
|
| 311 | +**Dimostrazione** |
|
| 312 | + |
|
| 313 | +- si utilizza una variante del grafo di Holt, detto grafo Wait-For |
|
| 314 | +- si ottiene un grafo wait-for eliminando i nodi di tipo risorsa e collassando gli archi appropriati |
|
| 315 | +- il grafo di Holt contiene un ciclo se e solo se il grafo Wait-for contiene un ciclo |
|
| 316 | +- se il grafo Wait-for contiene un ciclo, abbiamo attesa circolare |
|
| 317 | + |
|
| 318 | + |
|
| 319 | + |
|
| 320 | +**Attenzione**: |
|
| 321 | +La presenza di un ciclo nel caso di Holt non è condizione sufficiente per avere deadlock |
|
| 322 | + |
|
| 323 | +No deadlock perche' quando r finisce la sua risorsa puo essere data a p o q per permettergli di finire l'esecuzione |
|
| 324 | + |
|
| 325 | +#### Riducibilità di un grafo di Holt |
|
| 326 | + |
|
| 327 | +Definizione |
|
| 328 | + |
|
| 329 | +- un grafo di Holt si dice riducibile se esiste almeno un nodo processo con solo archi entranti |
|
| 330 | + |
|
| 331 | +Riduzione |
|
| 332 | + |
|
| 333 | +- consiste nell'eliminare tutti gli archi di tale nodo e riassegnare le risorse ad altri processi |
|
| 334 | + |
|
| 335 | +Qual è la logica? - eventualmente, un nodo che utilizza una risorsa prima o poi la rilascerà; a quel punto, la risorsa può essere riassegnata |
|
| 336 | + |
|
| 337 | + |
|
| 338 | + |
|
| 339 | +#### Deadlock detection con grafo di Holt |
|
| 340 | + |
|
| 341 | +Teorema |
|
| 342 | + |
|
| 343 | +- se le risorse sono a richiesta bloccante, non condivisibili e non prerilasciabili |
|
| 344 | +- lo stato non è di deadlock se e solo se il grafo di Holt è completamente riducibile, i.e. esiste una sequenza di passi di riduzione che elimina tutti gl archi del grafo |
|
| 345 | + |
|
| 346 | + |
|
| 347 | + |
|
| 348 | + |
|
| 349 | + |
|
| 350 | + |
|
| 351 | + |
|
| 352 | +#### Deadlock detection - Knot |
|
| 353 | + |
|
| 354 | +Definizione |
|
| 355 | + |
|
| 356 | +- dato un nodo n, l'insieme dei nodi raggiungibili da n viene detto insieme di raggiungibilità di n (scritto R(n)) |
|
| 357 | +- un knot del grafo G è il sottoinsieme (non banale) di nodi M tale che per ogni n in M, R(n)=M |
|
| 358 | +- in altre parole: partendo da un qualunque nodo di M, si possono raggiungere tutti i nodi di M e nessun nodo all'infuori di esso. |
|
| 359 | + |
|
| 360 | + |
|
| 361 | +Teorema |
|
| 362 | + |
|
| 363 | +- dato un grafo di Holt con una sola richiesta sospesa per processo |
|
| 364 | +- se le risorse sono a richiesta bloccante, non condivisibili e non prerilasciabili, |
|
| 365 | +- allora il grafo rappresenta uno stato di deadlock se e solo se esiste un knot |
|
| 366 | + |
|
| 367 | +### Deadlock recovery |
|
| 368 | + |
|
| 369 | +Dopo aver rilevato un deadlock bisogna sistemarlo |
|
| 370 | +La soluzione può essere: |
|
| 371 | + |
|
| 372 | +- manuale |
|
| 373 | + - l'operatore viene informato e eseguirà alcune azioni che permettano al sistema di proseguire |
|
| 374 | +- automatica |
|
| 375 | + - il sistema operativo è dotato di meccanismi che permettono di risolvere in modo automatico la situazione, in base ad alcune politiche |
|
| 376 | + |
|
| 377 | +#### Meccanismi per il deadlock recovery |
|
| 378 | + |
|
| 379 | +Terminazione totale |
|
| 380 | + |
|
| 381 | +- tutti i processi coinvolti vengono terminati |
|
| 382 | + |
|
| 383 | +Terminazione parziale |
|
| 384 | + |
|
| 385 | +- viene eliminato un processo alla volta, fino a quando il deadlock non scompare |
|
| 386 | + |
|
| 387 | +Checkpoint/rollback |
|
| 388 | + |
|
| 389 | +- lo stato dei processi viene periodicamente salvato su disco (checkpoint) |
|
| 390 | +- in caso di deadlock, si ripristina (rollback) uno o più processi ad uno stato precedente, fino a quando il deadlock non scompare |
|
| 391 | + |
|
| 392 | +Quindi terminare processi puo essere costoso e puo' lasciare le risorse in uno stato incoerente (es se un proc viene terminato nel mezzo di una sezione critica) |
|
| 393 | + |
|
| 394 | +#### Deadlock prevention / avoidance |
|
| 395 | + |
|
| 396 | +Prevention: |
|
| 397 | + |
|
| 398 | +- per evitare il deadlock si elimina una delle quattro condizioni del deadlock |
|
| 399 | + il deadlock viene eliminato strutturalmente |
|
| 400 | + |
|
| 401 | +Avoidance |
|
| 402 | + |
|
| 403 | +- prima di assegnare una risorsa ad un processo, si controlla se l'operazione può portare al pericolo di deadlock |
|
| 404 | +- in quest'ultimo caso, l'operazione viene ritardata |
|
| 405 | + |
|
| 406 | +Attaccare la condizione di "Mutua esclusione" |
|
| 407 | + |
|
| 408 | +- permettere la condivisione di risorse |
|
| 409 | +- e.g. spool di stampa, tutti i processi "pensano" di usare contemporaneamente la stampante |
|
| 410 | + |
|
| 411 | +Problemi dello spooling: |
|
| 412 | + |
|
| 413 | +- non sempre è applicabile (ad esempio, descrittori di processi) |
|
| 414 | + |
|
| 415 | +Attaccare la condizione di "Richiesta bloccante" |
|
| 416 | + |
|
| 417 | +- Allocazione totale |
|
| 418 | + - è possibile richiedere che un processo richiede tutte le risorse all'inizio della computazione |
|
| 419 | +- Problemi |
|
| 420 | + - non sempre l'insieme di richieste è noto fin dall'inizio |
|
| 421 | + - si riduce il parallelismo |
|
| 422 | + |
|
| 423 | +Attaccare la condizione di "Assenza di prerilascio" |
|
| 424 | + |
|
| 425 | +- non sempre è possibile |
|
| 426 | +- può richiedere interventi manuali |
|
| 427 | + |
|
| 428 | +Attaccare la condizione di "Attesa Circolare" |
|
| 429 | + |
|
| 430 | +- Allocazione gerarchica |
|
| 431 | + - alle classi di risorse vengono associati valori di priorità |
|
| 432 | + - ogni processo in ogni istante può allocare solamente risorse di priorità superiore a quelle che già possiede |
|
| 433 | + - se un processo vuole allocare una risorsa a priorità inferiore, deve prima rilasciare tutte le risorse con priorità uguale o superiore a quella desiderata |
|
| 434 | + |
|
| 435 | +Allocazione gerarchica e allocazione totale: problemi |
|
| 436 | + |
|
| 437 | +- prevengono il verificarsi di deadlock, ma sono altamente inefficienti |
|
| 438 | + |
|
| 439 | +Nell'allocazione gerarchica: |
|
| 440 | + |
|
| 441 | +- l'indisponibilità di una risorsa ad alta priorità ritarda processi che già detengono risorse ad alta priorità |
|
| 442 | + |
|
| 443 | +Nell'allocazione totale: |
|
| 444 | + |
|
| 445 | +- anche se un processo ha necessità di risorse per poco tempo deve allocarla per tutta la propria esistenza |
|
| 446 | + |
|
| 447 | +#### L'algoritmo del banchiere |
|
| 448 | + |
|
| 449 | +- un algoritmo per evitare lo stallo sviluppato da Dijkstra (1965) |
|
| 450 | +- 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 |
|
| 451 | + |
|
| 452 | +Descrizione |
|
| 453 | + |
|
| 454 | +- un banchiere desidera condividere un capitale (fisso) con un numero (prefissato) di clienti |
|
| 455 | + - per Dijkstra l'"unità di misura" erano fiorini olandesi |
|
| 456 | +- ogni cliente specifica in anticipo la sua necessità massima di denaro |
|
| 457 | + - che ovviamente non deve superare il capitale del banchiere |
|
| 458 | +- i clienti fanno due tipi di transazioni |
|
| 459 | + - richieste di prestito |
|
| 460 | + - restituzioni |
sistemi/s02/assets/imgs/20260305_2026-03-05_15-26-01.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_15-26-01.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_16-43-41.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_16-43-41.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_16-46-33.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_16-46-33.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_16-47-56.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_16-47-56.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_16-54-51.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_16-54-51.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_16-55-27.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_16-55-27.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_16-57-35.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_16-57-35.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-01.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-01.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-11.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-11.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-27.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-27.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-44.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-44.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-53.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_17-02-53.png differ |
sistemi/s02/assets/imgs/20260305_2026-03-05_17-06-10.png
| ... | ... | Binary files /dev/null and b/sistemi/s02/assets/imgs/20260305_2026-03-05_17-06-10.png differ |