Obiettivi degli algoritmi di scheduling

Per trovare un algoritmo ottimale andremo a definire diverse metriche, queste saranno utili per definire degli algoritmi ottimali.

Definiamo diversi ambienti, e per ognuno di questi definiamo le priorità che hanno:

  • batch:
    • l’equità nell’assegnazione della CPU
    • bilanciamento nell’uso delle risorse
  • interattivi:
    • massimizzare il tempo di risposta
  • real-time:
    • rispetto delle scadenze
    • prevedibilità

Generalità

Ricordiamo

Preemptive = Il sistema operativo può interrompere a metà un processo in esecuzione per dare la CPU a qualcun altro. Non-preemptive = Una volta che un processo ottiene l’uso della CPU, se la tiene stretta finché non ha finito.

Scheduling nei sistemi batch

Abbiamo diversi algoritmi che vengono usati nei sistemi batch:

  • FCFS(First-come first-served) - non preemptive: il primo che arrivo è il primo che viene servito, praticamente una coda FIFO molto semplice ma non troppo utile
  • SJF(Shortest job first) - non preemptive: presuppone la conoscenza del tempo impiegato da ogni lavoro (viene eseguito il job che ha durata minore) - si riduce il tempo minimo di attesa, ma resta comunque non ottimale
  • SRTN(Shortest Remaing Time Next) - preemptive: È la versione “preemptive” del SJF. Se un processo lungo sta girando e all’improvviso arriva un processo cortissimo, il sistema ferma quello lungo per sbrigare subito quello corto.

Di questi algoritmi ha fatto diversi esempi

Scheduling nei sistemi interattivi

Anche qui abbiamo diversi algoritmi per ottimizzare questo problema, uno di questo è:

  • Scheduling round robin: (RR): questa è una versione con prelazione del FCFS, che si basa sullo gestire il tutto in un quanto di tempo

DANGER

Ci sono altre cose da dire