Server aperiodici a priorità fissa

Transcript

Server aperiodici a priorità fissa
Server aperiodici a priorità fissa
Corso di Sistemi Real Time
A.A. 2005-06
Ing. Giordano Kaczynski
Introduzione
- Deferrable Server
- Sporadic Server
- Slack Stealer
Deferrable Server - 1
Il Deferrable Server (DS) consente di migliorare il tempo di risposta
ottenibile con la tecnica del polling.
A differenza del PS, il DS conserva la propria capacità inutilizzata.
Grazie alla possibilità di fornire un servizio immediato alle richieste
aperodiche esso migliora i loro tempi di risposta.
Deferrable Server - 2
Sia il task TDS=(Ts,Cs) un Deferrable Server.
La capacità Cs viene ripristinata all'inizio di ogni periodo Ts
La capacità viene conservata per tutta la durata del periodo.
DS – Esempio
Si considerino i task Ta e Tb con le seguenti caratteristiche:
Ci
Ti
Ta
1
4
Tb
2
6
Per i task aperiodici utilizziamo un DS con le seguenti caratteristiche:
Cs = 2
e
Ts = 5
DS – Esempio
Ta
Tb
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – Esempio
Ta
Tb
2
1
2
1
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
DS – LUB - 1
Sebbene il DS migliori il tempo di risposta dei task aperiodici incide
maggiormente sul fattore di utilizzazione rispetto al PS.
E' stato dimostrato che, per un numero n di task periodici ed un DS
il limite superiore minimo del fattore di utilizzazione relativo ad RM è
Ulub =
DS – LUB - 2
Per n che tende ad infinito diventa:
Ulub =
Il sistema è schedulabile se:
Up ≤
DS – Max Utilization
La dimensione massima di un DS è
Significativamente minore di quella di un PS corrispondente.
Ad esempio:
per Up = 60% si ha Ups = 10% e Uds = 7%
per Up = 30% si ha Ups = 48% e Uds = 38%
Sporadic Server
Lo Sporadic Server consente di migliorare il tempo di risposta dei
task aperiodici, al contempo senza degradare il limite superiore
minimo del fattore di utilizzazione del processore.
Come DS, lo SS conserva la capacità fino all'arrivo di una richiesta
aperiodica, ma ripristina la capacità del server solo dopo che essa
è stata consumata.
SS - 1
Lo Sporadic Server si dice:
Attivo - se la priorità del processo in esecuzione (server
compreso) è maggiore o uguale a quella del server.
Idle - quando non è attivo.
SS - 2
La capacità dello Sporadic Server viene ripristinata in base alle
seguenti regole:
1 – Il tempo di riempimento (RT) viene valutato appena si verifica
[(Cs > 0) AND (SS è attivo)]
detto ta tale istante, si pone RT = ta + Ts
SS - 3
2 – L'ammontare del riempimento (RA) viene valutato appena si
verifica
[(Cs = 0) AND (SS è idle)]
detto ti tale istante, si pone RA pari alla capacità consumata in
[ta, ti].
SS – Esempio
Si considerino i task Ta e Tb con le seguenti caratteristiche:
Ci
Ti
Ta
1
5
Tb
4
15
Ad essi aggiungiamo uno SS con le seguenti caratteristiche:
Cs = 5
e
Ts = 10
SS – Esempio
Ta
Tb
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 10
Ta
Tb
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 10
RA = 0
Ta
Tb
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
Ta
Tb
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 14
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 14
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 14
Ta
Tb
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 14
RA = 2
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 18
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 18
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 18
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 18
RA = 2
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 25
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
RT = ta + Ts = 25
RA = 0
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Esempio
Ta
Tb
2
2
Richieste
aperiodiche
Cs
0
2
4
6
8
10
12
14
16
18
20
22
24
SS – Max Utilization
Lo Sporadic Server si comporta come un task periodico equivalente,
dal punto di vista della schedulabilità.
Quindi si ha, come per il PS, che:
 2 
Up ≤ ln

 Us + 1 
Slack Stealer - 1
Lo Slack Stealer è una tecnica che “ruba” ai task periodici il tempo
per eseguire i task aperiodici.
Esso non ha una capacità prefissata, ma di volta in volta viene
calcolato lo slack disponibile e viene assegnato allo Slack Stealer.
Slack (o laxity) è il tempo massimo per cui l'esecuzione di un task
può essere ritardata consentendo comunque il suo completamento
entro la deadline.
Slack Stealer - 2
Ricordiamo, lo slack si calcola, detto c(t) il tempo residuo di
esecuzione del task :
slack(t) = di – t – c(t)
Lo Slack Stealer utilizzare lo slack per servire eventuali richieste
aperiodiche.
Slack Stealer - Es.
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer - Es.
3
Ta
Tb
0
2
4
6
8
10
12
14
16
18
20
Slack Stealer – Approcci - 1
Lo Slack Stealer non è facile da implementare, poiché necessita del
calcolo dello slack ogni volta che una richiesta aperiodica deve
essere servita.
Questo calcolo cresce di complessità al crescere dell'iperperiodo.
Esistono due tecniche fondamentali per calcolare lo slack,
uno statico e l'altro dinamico
Slack Stealer – Approcci - 2
Il metodo statico utilizza una tabella precalcolata off-line che
contiene tutti gli slack istante per istante nell'iperperiodo.
L'approccio dinamico calcola lo slack di volta in volta.
Entrambi assolvono il loro compito; al prezzo della memoria il primo,
al prezzo del capacità di calcolo il secondo.
Slack Stealer e ottimalità
Per lungo tempo si è ritenuto che lo Slack Stealer fosse un algoritmo
ottimo, in termini di minimizzazione del tempo di risposta dei task
aperiodici.
Successivamente, tuttavia, è stato dimostrata la non esistenza di
algoritmi ottimi per server aperiodici in presenza di RM.