Shortest-Job-First: SJF (2)
...
Pag 4
Shortest-Job-First: SJF (3)
...
Priorità (1)
La priorità è una proprietà del processo che indica quanto prima dobbiamo eseguirlo rispetto ad altri, indipendentemente dall'ordine con cui arrivano.
Si tratta in pratica di assegnare ad ogni processo un indice che indica il suo livello di priorità, sarà poi il sistema operativo a decidere come trattarlo. Va infatti detto che non è affatto automatico il collegamento "indice alto"-"priorità alta". Ad esempio nei sistemi UNIX più l'indice è basso e più è importante; in particolare i processi di sistema hanno priorità negativa (il minimo è -20) mentre quelli delle applicazioni positiva.
Infine, da notare come dare più proprietà non vuol dire necessariamente dare più tempo ad ogni processo.
Pag 5
Priorità (2)
Pre-emptive: processo che diventa pronto interrompe processo in esecuzione richiedendo schedulazione.
Quando in pratica un processo entra nello stato ready-to-run andrò a vedere se nella lista dei processi running ho solo processi di priorità minore, nel qual caso toglierò con una pre-emption quello in esecuzione e caricherò quello nuovo. Se invece in esecuzione ho un processo di priorità maggiore, ordinerò l'ultimo arrivato secondo i normali criteri di schedulazione (anche se generalmente mantengo l'ordine di arrivo, così aggiungo in coda e tebbona)
Non pre-emptive:processo che diventa pronto non interrompe rocesso in esecuzione richiedendo schedulazione.
Se il processo considerato ha priorità maggiore di quello in esecuzione, lascio finire quest'ultimo e quando sarà completato manderò in esecuzione quello nuovo
Priorità (3)
Un problema di questo tipo di politica di schedulazione è che processi a bassa priorità potrebbero rimanere ready-to-run per un tempo indefinito; basta infatti che continuino ad arrivare processi a priorità maggiori che gli soffino il posto. Questo fenomeno prende il nome di starvation, che se proprio vogliamo dirlo in italiano lo chiameremo "blocco indefinito" e non (letteralmente) affamamento, o Puree si incazza.
La soluzione è introdurre un progressivo invecchiamento delle priorità, detto aging. In pratica, se abbiamo un processo che rimane in starvation per un tempo abbastanza lungo, cominciamo ad aumentargli la priorità proporzionalmente al tempo di attesa, sperando che acquisisca (e prima o poi accadrà) abbastanza priorità da essere eseguito. Una volta ottenuto il suo turno di computazione gli riabbatto la priorità allo stato iniziale, e riprendo il ciclo di prima (starvation, invecchiamento, computazione, ecc).
Ho quindi delle priorità di tipo dinamico che aumentano con l'invecchiare del processo.
Pag 6
Round-Robin RR (1)
...
Round-Robin RR (2)
Alcune caratteristiche:
- distribuzione uniforme del tempo di elaborazione tra i processi pronti (andando a turno a dare un quanto di tempo ai vari processi)
- velocità di esecuzione dei processi dipende dal numero di processi pronti
- turnaround (tempo di permanenza nel sistema) dipende dalla durata del quanto di tempo
Pag 7
Coda a più livelli (1)
...
Coda a più livelli (2)
...
Pag 8
Coda a più livelli con retroazione C+LR (1)
...
Coda a più livelli con retroazione C+LR (2)
...
Pag 9
Schedulazione in sistemi multiprocessore (1)
...
Schedulazione in sistemi multiprocessore (2)
...
Pag 10
Schedulazione in sistemi multiprocessore (3)
...
Schedulazione in sistemi multiprocessore (4)
...