Related


Introduzione

In UNIX vengono utilizzati diversi algoritmi di scheduling insieme, nello specifico è combinata il concetto di priorità con l’algoritmo Round Robin

Caratteristiche

  • Un processo resta in esecuzione per un quanto (un secondo in unix) a meno che non termini o si blocchi.
  • Ci sono diverse code per ogni priorità e su ognuna si utilizza il Round-Robin
  • Ogni secondo vengono ricalcolate le priorità, quindi più uno resta in esecuzione più la sua priorità viene abbassata.
  • Le priorità iniziale vengono stabilite in base al tipo di processo:
    • Swapper (alta), gestisce la memoria virtuale
    • Controllo dispositivi I/O a blocchi (dischi)
    • Gestione file
    • Controllo dispositivi I/O a caratteri (tastiera)
    • Processi Utente (bassa)

Priorità

Per scegliere quale processo eseguire viene data una prioritaria ad ognuno ed ogni secondo viene aggiornata.

Caratteristiche

  • Più il valore è basso più è alta la priorità di esecuzione
  • Formula sufficientemente semplice da avere un overhead basso (ovvero il calcolo non deve essere troppo dispendioso per la CPU) ma allo stesso tempo deve assicurare delle buone performance\

Formula

oss:

Dove:

  •  indica quanto il processo  ha usato il processore nell’intervallo , usa exponential averaging dei tempi passati
  • Per i running, viene incrementato di 1 ogni di secondo
  • ​ indica la categoria del processo vista prima
  • , un processo può indicare questo valore “di cortesia” per auto-declassarsi e dare spazio ad altri processi (utilizzato solitamente in processi di sistema dove il S.O. sa che sone meno importanti)

Esempio

In quest immagine i blocchi colorati rappresentano i processi in esecuzione, Priority rappresenta , CPU count rappresenta e Time i quanti di tempo

Dati:

  • Hanno tutti li stesso valore di nice (0)
  • Hanno tutti li stesso valore di base (60)

Funzionamento:

  • Il processo A è to per primo e viene mandato in esecuzione, mentre gli altri non sono in esecuzione il loro valore di ​ non viene incrementato,​ mentre quello di A è aumentato di .
  • Dopo un quanto (1 secondo) avviene un l’interrupt che arresta il processo A, il suo valore  diventa ​ e nella priorità viene ridiviso per 2 e sommato a base quindi otteniamo 15+60=75 di priorità.
  • Viene quindi scelto B dato che è arrivato prima di C e ha priorità più bassa di A.
  • Vengono effettuati gli stessi passaggi di prima…