Sei sulla pagina 1di 35

Introduzione allo

Scheduling
Corso di
Progetto e Sviluppo di
Sistemi in Tempo Reale

Marcello Cinque

1
Introduzione allo Scheduling
l  Sommario della lezione:
l  Definizioni di base
l  Vincoli sui processi

l  Classificazione e metriche

l  Anomalie di scheduling

l  Riferimenti
l  G. Buttazzo – Sistemi in Tempo Reale –
Pitagora Editrice (Cap. 2)

2
Processo o Task
l  Sequenza di istruzioni che, in assenza di altre attività,
viene eseguita dal processore in modo continuativo fino
al suo completamento
Ci

si Pi
ri Ri fi
l  ri : release time (o arrival time ai)
l  si : start time
l  Ci : computation time (o WCET)
l  fi : finisihing time (o completion time)
l  Ri = fi - ri : response time
3
Relazione tra processo e programma
l  Programma
l  ..è la codifica di un algoritmo in un opportuno linguaggio di
programmazione che ne rende possibile l’esecuzione da
parte di un elaboratore;
l  e’ una descrizione statica delle elaborazioni da eseguire.
l  Processo
l  …è l’unità base di esecuzione del SO che identifica le attività
dell’elaboratore relative ad una specifica esecuzione di un
programma;
l  Un processo è un programma in esecuzione
l  E’ una entità dinamica (programma + stato di esecuzione).

l  Processi differenti possono eseguire più istanze di


uno stesso programma

4
Descrittore di un processo (1/2)

l  Ad ogni processso è associata una


struttura dati (tipo record), denominata
Descrittore del processo
(PCB- Process Control Block);
l  I descrittori sono a loro volta organizzati
in una tabella dei processi
(Process Table)

5
Descrittore di un processo

l  Le informazioni da registrare nel descrittore


possono essere così classificate:
l  Nome del Processo;
l  Stato del Processo;
l  Modalità di servizio (ad es. priorità, deadline);
l  Informazioni sulla gestione della memoria;
l  Contesto del processo (reg. del processore);
l  Utilizzo delle risorse;
l  Identificatore del processo successivo

6
Stati di un processo
Sospensione
Attivo
Esecuzione

Assegn. prerilascio Bloccato


CPU

Attivazione
Pronto Riattivazione

7
Ready queue
Processi Pronti dispatching
attivazione terminaz.
CPU

prelazione

l  I processi pronti sono mantenuti in una coda di attesa, detta


ready queue
l  algoritmo di scheduling: insieme di regole che determinano
la scelta del processo da mandare in esecuzione
l  dispatching: assegnazione della CPU al processo pronto
schedulato, effettuata dal SO dopo lo scheduling

8
Schedulazione
l  Una schedulazione è un assegnamento di task al
processore

l  Dato un insieme di task J = {J1, … , Jn}, una schedulazione è


una funzione σ : R+ à N tale che:

∀!! ∈ ! !! , ∃!! , !! ∶ !!! ∈ ! [!! , !! )!!!∀!′ ∈ [!! , !! ) ! → !!(!) ! = !!(!′)!

K se JK è in esecuzione in t
σ(t) =
0 se il processore è idle in t

9
Esempio di schedulazione

idle J1 J2 J3 idle
σ(t)
3
2
1

t1 t2 t3 t4 t
l  Negli istanti t1, t2, t3 e t4 avviene un context switch
l  time slice: intervalli [ti , ti+1) in cui σ(t) è costante

10
Schedulazione
l  Una schedulazione si dice:

l  Fattibile: se esiste un assegnamento dei task al processo-


re tale che tutti i task siano completati rispettando un
insieme di vincoli prefissati
l  Un insieme di task si dice schedulabile se per esso esiste
una schedulazione fattibile

l  Preemptive (con prelazione o prerilascio): se il processo


in esecuzione può essere sospeso in qualsiasi istante allo
scopo di assegnare il processore ad un altro task secondo
una strategia prefissata

11
Esempio di schedulazione
preemptive

idle J1 J2 J3 J2 J1 idle
σ(t)
3
2
1

12
Vincoli sui processi

l  I vincoli che si possono specificare sui processi, e che


una schedulazione deve rispettare per essere fattibile,
sono di tre tipi:

l  Vincoli temporali
l  attivazione, completamento, …
l  Vincoli di precedenza
l  Impongono un ordinamento nell’esecuzione
l  Vincoli su risorse
l  Impongono una sincronizzazione nell’accesso a risorse
mutuamente esclusive

13
Vincoli temporali

l  Possono essere espliciti, e inclusi direttamente nella


specifica del sistema
l  Ad es., apri valvola tra 10 secondi, produci output entro 20
secondi, leggi il sensore ogni 100 milli secondi, …

l  Possono essere impliciti, ovvero non specificati, ma da


rispettare per soddisfare i requisiti di sistema
l  Ad es., il tempo di campionamento minimo necessario per
calcolare la legge di controllo digitale per un certo impianto

14
Vincoli temporali
ci(t)
Ci xi(t)

Pi t
ri Di fi Li di
l  di : absolute deadline
l  Di : relative deadline
l  Li = fi - di : lateness
l  Ei = max(0, Li) : tardiness o exceeding time
l  ci(t) : residual wcet ci(ri) = Ci
l  xi(t) = di – t – ci(t) : laxity o slack time xi(ri) = Xi = di – ri – Ci
l  Criticality (o laxity type): hard o soft
l  vi : value (importanza relativa)
15
Modalità di attivazione

l  Time driven: Task periodici


sequenza infinita di attività identiche, eseguite su dati diversi,
ciascuna delle quali prende il nome di istanza o job, attivati in
modo regolare con una frequenza costante

l  Event driven: Task aperiodici


sequenza infinita di attività identiche, eseguite su dati diversi,
ciascuna delle quali caratterizzata da un tempo di arrivo, un tempo
di calcolo, e una deadline

16
Task periodici
Di
job 1 Ci job k
τi
ϕi ϕi +(k-1)Ti
Ti

l  ϕi : fase (tempo di attivazione della prima istanza)


l  Ti : periodo
l  I parametri Ti, Ci e Di sono costanti (spesso Ti = Di)
l  Jitter: variazione temporale degli eventi periodici
l  Ad es. start time jitter: max(si,k – ri,k) – min(si,k – ri,k)

17
Task periodici
l  Richiedono primitive specifiche e meccanismi ad-hoc del
sistema operativo per la loro gestione, ad es.:

while (condition) {
...
...
end_cycle();
}

attivo
esecuzione

idle pronto

18
Lo stato Idle
esecuzione

idle pronto

end cycle sospensione


Esecuzione
timer

Idle assegn. prerilascio Bloccato


CPU

wake up Pronto riattivazione

19
Task aperiodici e sporadici
Di Di
Ci Ci
Ji
ri,1 di,1 ri,2 di,2

l  Task aperiodici: ri ,k+1 > ri,k

l  Task sporadici: ri ,k+1 > ri,k + Δi


l  Task aperiodici in cui i job sono separati da un minimo
tempo di interarrivo

20
Vincoli di precendenza

l  Non sempre i processi possono essere eseguiti in


ordine arbitrario
l  Le relazioni di dipendenza vengono specificate in un
grafo diretto aciclico (DAG)
J1 J1 precede J4

J2 J3
J2 è immediato
predecessore di J4

J4 J5

21
Vincoli su risorse

l  Una risorsa è una qualsiasi entità software che può


essere usata da uno o più processi per portare a
termine la propria esecuzione
l  Risorsa: zona di memoria, struttura dati, porzione di codice, …

l  Risorsa condivisa: utilizzabile da più processi


l  Risorsa dedicata: riservata ad un solo processo
l  Risorsa mutuamente esclusiva: risorsa condivisa che
non ammette l’accesso contemporaneo da più processi

22
Vincoli su risorse

l  Sono esplicitati attraverso primitive di sincronizzazione


l  Ad es., i semafori
J1 J2

wait(s)
risorsa wait(s)
… condivisa …
sezione sezione
critica R critica
… …
signal(s) signal(s)

23
Vincoli su risorse
bloccato su s

J1
wait(s) signal(s)

J2
wait(s) preemption signal(s)

l  Si suppone che il processo J1 abbia maggiore


priorità di J2

24
Problema generale dello scheduling

l  Dato un insieme di n task J = {J1, … , Jn}, di cui sia noto


il DAG dei vincoli di precedenza, e le modalità di utilizzo
delle risorse condivise,
l  Il problema generale dello scheduling consiste nel
trovare una schedulazione fattibile di J, tale che:
l  Tutti i task terminino entro la propria deadline
l  Tutti i vincoli di precedenza siano rispettati
l  Tutte le risorse condivise siano accedute in mutua esclusione

25
Problema generale dello scheduling

l  E’ stato dimostrato che il problema generale dello


scheduling è computazionalmente intrattabile in tempo
polinomiale rispetto al numero di processi (NP-hard)

l  Allo scopo di realizzare algoritmi di complessità


polinomiale, si fanno assunzioni semplificative
l  si ammette la preemption
l  i processi non hanno vincoli di precedenza o su risorse
l  i processi hanno tempi di arrivo simultanei
l  i processi hanno tempi di calcolo idendici
l  si considerano insiemi di task omogenei (tutti periodici, o tutti
aperiodici)

26
Classificazione degli algoritmi di
scheduling

Uniprocessore Multiprocessore

Preemptive Non Preemptive

Statici Dinamici

Off-line On-line

Ottimi Euristici

27
Ottimalità
l  Un algoritmo di scheduling si dice ottimo se è in grado di
minimizzare una funzione di costo definita sui task

l  Nel senso della schedulabilità, un algoritmo A* è ottimo se è in


grado di generare una schedulazione fattibile

l  Se per un insieme di task J esiste uno schedule fattibile, allora


sicuramente J è schedulabile con A*
l  Se J non è schedulabile con A*, allora non è schedulabile con
nessun altro algoritmo (della stessa specie di A*)

28
Metriche
l  Tempo medio di risposta
!
1
!!=! ! (!! ! − ! !! )!
!
!!!

l  Tempo di completamento totale


!! ! = ! max(!! ) ! − ! min(!! )!
! !

l  Tempo di completamento pesato


!

!! ! = ! !! !!! !!
!!!

29
Metriche
l  Lateness massima
!!"# ! = ! max(!! ! − ! !! )! !!
!

l  Massimo numero di late task


!

!!"#$ ! = ! !"##(!! )!!


!!!
l  dove
0!!!!!!!"!!! ! ≤ ! !!
!"##(!! ) ! = ! !
1!!!!!!!"ℎ!"#$%!

30
Anomalie di scheduling
l  Si consideri un insieme J di 9 task, ordinato per priorità
decresenti:
l  Priorità Ji maggiore di priorità Jk per i < k
l  I task sono caratterizzati da vincoli di precedenza
C1 = 3 J1 J9 C9 = 9
J8 C8 = 4
C2 = 2 J2
J7 C7 = 4
C3 = 2 J3
J6 C6 = 4

C4 = 2 J4 J5 C5 = 4
31
Scheduling su 3 processori

J1 J9

J2 J4 J5 J7 tc = 12
J3 J6 J8

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 t

C1 = 3 1 9 C9 = 9

2
8 C8 = 4 Si assume di allocare ciascun
C2 = 2
7 C7 = 4 task sul primo processore libero
C3 = 2 3
6 C6 = 4
4 5 C5 = 4
C4 = 2

32
Architettura più potente
(4 processori)
J1 J8

J2 J5 J9
tc = 15
J3 J6

J4 J7

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 t

C1 = 3 1 9 C9 = 9
8
C2 = 2 2
C8 = 4
Maggiore potenza di calcolo non sem-
7 C7 = 4 pre garantisce migliori prestazioni!
C3 = 2 3
6 C6 = 4
4 5 C5 = 4
C4 = 2

33
Tempi di calcolo ridotti
(di 1 unità per processo)

J1 J5 J8

J2 J4 J6 J9 tc = 13
J3 J7

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 t

C1 = 2 1 9 C9 = 8
8 C8 = 3
C2 = 1 2
7 C7 = 3
C3 = 1 3
6 C6 = 3
4 5 C5 = 3
C4 = 1

34
Eliminazione dei vincoli di
precedenza

J1 J6 J9

J2 J4 J7 tc = 16
J3 J5 J8

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 t

C1 = 3 1 9 C9 = 9
8 C8 = 4
C2 = 2 2
7 C7 = 4
C3 = 2 3
6 C6 = 4
4 5 C5 = 4
C4 = 2

35

Potrebbero piacerti anche