SJF
Shortest Job First
Algoritmo di scheduling S.O.
prof. Alfredo Centinaro
www.alfredocentinaro.it
Come funziona
● E’ un algoritmo molto semplice come il FCFS
● Tra i processi arrivati e in attesa di essere schedulati, non si prende il primo arrivato, ma quello più
corto, col burst quindi più piccolo!
● Si assegna la cpu per tutta la durata del processo
● Evita l’effetto treno: un processo molto lungo arrivato per primo che occupa la cpu a scapito di altri
processi magari più corti
● Ha due versioni: una senza ed una con la prelazione (la vediamo più avanti)
● Le misure di performance sono sempre le stesse come il Tempo Medio di Attesa
Esempio
Esempio
Al tempo 0 prendo il più corto
e tra P1 e P2 è proprio P1
Esempio
● Terminato il P1, abbiamo in lista d’attesa P2, P3, P4
● Se fossimo in FCFS, dovremmo eseguire P2, il primo arrivato tra quelli in attesa
● Con SJF assegno la CPU al più corto ->P4
● Anche se tra tutti quelli in attesa è l’ultimo arrivato!
Esempio
● Eseguito il P4, controllo nuovamente chi è arrivato e in attesa
● Abbiamo P2 e P3 in attesa
● P5 ancora non arriva, entrà alla fine del 7 ms
● Scelgo il più corto ->P3
Esempio
● Ripetiamo la dinamica: tra i processi in attesa, qual è il più breve?
● Finito il P4 sono entrati tutti i processi
● Il più breve è -> P5
Esempio
● Rimane solo il P2 da assegnare alla CPU
● Curioso esempio: il P2 era arrivato al tempo 0 ma è ultimo!
Esempio
Calcoliamo il TMA
● P1 -> 0
● P2 -> 10
● P3 -> 4
● P4 -> 0
● P5 -> 2
TMA = (0+10+4+0+2)/ 5 =16/5=3,2 ms
Come sarebbe andata con FCFS
FCFS
SJF
TMA SJF = (0+10+4+0+2)/ 5 =16/5=3,2 ms
TMA FCFS = (0+4+8+9+8)/5=29/5=5,8ms

Sjf shortest job first

  • 1.
    SJF Shortest Job First Algoritmodi scheduling S.O. prof. Alfredo Centinaro www.alfredocentinaro.it
  • 2.
    Come funziona ● E’un algoritmo molto semplice come il FCFS ● Tra i processi arrivati e in attesa di essere schedulati, non si prende il primo arrivato, ma quello più corto, col burst quindi più piccolo! ● Si assegna la cpu per tutta la durata del processo ● Evita l’effetto treno: un processo molto lungo arrivato per primo che occupa la cpu a scapito di altri processi magari più corti ● Ha due versioni: una senza ed una con la prelazione (la vediamo più avanti) ● Le misure di performance sono sempre le stesse come il Tempo Medio di Attesa
  • 3.
  • 4.
    Esempio Al tempo 0prendo il più corto e tra P1 e P2 è proprio P1
  • 5.
    Esempio ● Terminato ilP1, abbiamo in lista d’attesa P2, P3, P4 ● Se fossimo in FCFS, dovremmo eseguire P2, il primo arrivato tra quelli in attesa ● Con SJF assegno la CPU al più corto ->P4 ● Anche se tra tutti quelli in attesa è l’ultimo arrivato!
  • 6.
    Esempio ● Eseguito ilP4, controllo nuovamente chi è arrivato e in attesa ● Abbiamo P2 e P3 in attesa ● P5 ancora non arriva, entrà alla fine del 7 ms ● Scelgo il più corto ->P3
  • 7.
    Esempio ● Ripetiamo ladinamica: tra i processi in attesa, qual è il più breve? ● Finito il P4 sono entrati tutti i processi ● Il più breve è -> P5
  • 8.
    Esempio ● Rimane soloil P2 da assegnare alla CPU ● Curioso esempio: il P2 era arrivato al tempo 0 ma è ultimo!
  • 9.
    Esempio Calcoliamo il TMA ●P1 -> 0 ● P2 -> 10 ● P3 -> 4 ● P4 -> 0 ● P5 -> 2 TMA = (0+10+4+0+2)/ 5 =16/5=3,2 ms
  • 10.
    Come sarebbe andatacon FCFS FCFS SJF TMA SJF = (0+10+4+0+2)/ 5 =16/5=3,2 ms TMA FCFS = (0+4+8+9+8)/5=29/5=5,8ms