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
+![20260305_2026-03-05_15-26-01](assets/imgs/20260305_2026-03-05_15-26-01.png)
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
+![20260305_2026-03-05_16-43-41](assets/imgs/20260305_2026-03-05_16-43-41.png)
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
+![20260305_2026-03-05_16-46-33](assets/imgs/20260305_2026-03-05_16-46-33.png)
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
+![20260305_2026-03-05_16-47-56](assets/imgs/20260305_2026-03-05_16-47-56.png)
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
+![20260305_2026-03-05_16-54-51](assets/imgs/20260305_2026-03-05_16-54-51.png)
319
+
320
+**Attenzione**:
321
+La presenza di un ciclo nel caso di Holt non è condizione sufficiente per avere deadlock
322
+![20260305_2026-03-05_16-55-27](assets/imgs/20260305_2026-03-05_16-55-27.png)
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
+![20260305_2026-03-05_16-57-35](assets/imgs/20260305_2026-03-05_16-57-35.png)
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
+![20260305_2026-03-05_17-02-01](assets/imgs/20260305_2026-03-05_17-02-01.png)
347
+![20260305_2026-03-05_17-02-11](assets/imgs/20260305_2026-03-05_17-02-11.png)
348
+![20260305_2026-03-05_17-02-27](assets/imgs/20260305_2026-03-05_17-02-27.png)
349
+![20260305_2026-03-05_17-02-44](assets/imgs/20260305_2026-03-05_17-02-44.png)
350
+![20260305_2026-03-05_17-02-53](assets/imgs/20260305_2026-03-05_17-02-53.png)
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
+![20260305_2026-03-05_17-06-10](assets/imgs/20260305_2026-03-05_17-06-10.png)
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