Vai al contenuto

Algoritmo di scheduling EDF

Da Wikipedia, l'enciclopedia libera.
Versione del 26 mar 2017 alle 22:29 di ValterVBot (discussione | contributi) (Note: Sostituzione template reference, replaced: {{references}} → <references/>)

L'Earliest Deadline First (EDF), in italiano prima la deadline più vicina, è un algoritmo di scheduling tipico dei sistemi operativi real-time. Come dice il nome stesso, lo scheduler seleziona come prossimo processo da eseguire quello con la distanza minore dalla sua deadline. EDF è un algoritmo a priorità dinamica, in quanto la priorità assegnata ai processi cambia potenzialmente ad ogni esecuzione dello scheduler e il suo valore dipende unicamente dalle caratteristiche temporali degli stessi (tempo di arrivo, deadline, ecc.)[1].

La complessità dell'algoritmo è tradizionalmente [2], anche se in letteratura scientifica è possibile trovare algoritmi che ammortizzano la complessità a [3].

Caratteristiche dell'algoritmo

La definizione formale dell'algoritmo di scheduling EDF può essere scritta come[1]:

Ad ogni istante temporale t, il job j è scelto per schedulato se la sua deadline è la più vicina al tempo t.

Assumendo che ogni processo diventi pronto a intervalli di tempo di periodo e che la deadline corrisponda al periodo (deadline implicita), allora è possibile calcolare analiticamente l'utilizzazione del sistema come:

dove è il tempo di esecuzione worst-case. Se , lo schedule è ammissibile.

Ottimalità di EDF

EDF è un algoritmo ottimo su sistemi uniprocessore preemptive: se non esiste uno schedule valido in EDF, non esisterà alcun altro algoritmo in grado di trovarlo.[4]

Esempio

Si considerino i seguenti processi (si ipotizzi una deadline implicita, ovvero equivalente al periodo):

Processo Tempo di esecuzione Periodo
P1 1 8
P2 2 5
P3 4 10

Lo scheduler al tempo 0 verificherà la distanza delle deadline dei processi, è in questo caso la priorità assegnati ai processi è :

Uno schedule possibile dell'esempio
Uno schedule possibile dell'esempio

Note

  1. ^ a b Sanjoy Baruah, Scheduling Real-time Tasks: Algorithms and Complexity, The University of North Carolina at Chapel Hill.
  2. ^ Michael O’Boyle, [www.inf.ed.ac.uk/teaching/courses/es/PDFs/lecture_7.pdf Embedded Software - Lecture 6: Scheduling] (PDF). URL consultato il 23 novembre 2016.
  3. ^ Singh, Jagbeer., An algorithm to reduce the time complexity of earliest deadline first scheduling algorithm in real-time system., 2010.
  4. ^ Arezou Mohammadi, Selim G. Akl, Scheduling Algorithms for Real-Time Systems (PDF), School of Computing, Queen’s University, 2005.