Scheduler: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Etichette: Annullato Modifica visuale |
Annullata la modifica 117336615 di 93.71.237.163 (discussione) Etichetta: Annulla |
||
Riga 70:
Tuttavia se i processi sono [[CPU-bound]] e lunghi, il [[FCFS]] rimane l'algoritmo migliore.
===
L'algoritmo di scheduling RR (''[[round-robin]]'') è un particolare algoritmo con prelazione (preemptive) che esegue i processi nell'ordine d'arrivo, come il FCFS, ma esegue la prelazione del processo in esecuzione, ponendolo alla fine della coda dei processi in attesa, qualora l'esecuzione duri più della "quantità di tempo" stabilita, e facendo proseguire l'esecuzione al successivo processo in attesa.
Ad esempio nell'ipotesi che vi siano i seguenti processi in coda con relativa durata in millisecondi, e la quantità di tempo stabilita di 20 ms:
*p1: 30
*p2: 15
*p3: 60
*p4: 45
Verranno eseguiti nel seguente ordine:
*p1 (interrotto dopo 20 ms, ne rimangono altri 10)
*p2 (termina la propria esecuzione perché dura meno di 20 ms)
*p3 (interrotto dopo 20 ms, ne rimangono altri 40)
*p4 (interrotto dopo 20 ms, ne rimangono altri 25)
*p1 (termina la propria esecuzione perché necessitava di meno di 20 ms)
*p3 (interrotto dopo 20 ms, ne rimangono altri 20)
*p4 (interrotto dopo 20 ms, ne rimangono altri 5)
*p3 (termina la propria esecuzione perché necessitava di esattamente 20 ms)
*p4 (termina la propria esecuzione)
Le prestazioni di quest'algoritmo sono dunque influenzate dal tempo medio d'attesa, sebbene consenta a tutti i processi di ottenere il controllo della CPU ed evita quindi il problema dell'attesa indefinita ([[starvation]]).
|