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.