Scheduling in Echtzeitbetriebssystemen
- Prof. Dr. Margarita Esponda
Freie Universität Berlin
Scheduling in Echtzeitbetriebssystemen Prof. Dr. Margarita Esponda - - PowerPoint PPT Presentation
Scheduling in Echtzeitbetriebssystemen Prof. Dr. Margarita Esponda Freie Universitt Berlin Echtzeitsysteme Korrekte Ergebnisse zum richtigen Zeitpunkt Hart Eine versptete Antwort ist eine falsche Antwort Echtzeitsysteme Weich Eine
Freie Universität Berlin
Echtzeitsysteme Hart Weich
Eine verspätete Antwort ist eine falsche Antwort Eine verspätete Antwort bedeutet schlechte Qualität
statische Prioritäten dynamische Prioritäten
Rate Monotonic Scheduling Deadline Monotonic Scheduling Earliest Deadline First Least Laxity First
Vereinfachung: Die Prozesse sind voneinander unabhängig Die Prozesse sind alle unterbrechbar Notation: r = release
= Startpunkt, an dem der Prozess zur Ausführung bereit ist.
e = execution = Zeiteinheiten für die CPU.
Schlimmste Ausführungszeit.
d = deadline
= Zeiteinheiten bis zur nächsten Zeitschranke.
p = period
= Zeit bis zum nächsten Aufruf desselben Prozesses.
Prozess: Ti = ( ri, ei, di, pi ) Beispiel: T1 = ( 1, 3, 7, 10 )
Prozess: Ti = ( ri, ei, di, pi ) Beispiel: T1 = ( 1, 3, 7, 10 ) Zeit
8 1 11
r =1 e =3 d =7 p =10 T1
5 10 15 20 Prozesse
T1 T2 T3
T1 = ( 0, 1, 3, 3 ) Start CPU Deadline Periode T2 = ( 0, 1, 4, 4 ) T3 = ( 0, 2, 5, 5 )
3 CPUs
Feste Prioritäten
Die Prioritäten werden umgekehrt proportional zur Periode vergeben
Beispiel: T1 = ( 0, 2, 5, 5 ) T2 = ( 0, 3, 10, 10 ) T3 = ( 0, 4, 20, 20 )
Deadline = Periode
r e d p
T1 = ( 0, 2, 5, 5 ) T2 = ( 0, 2, 7, 7 ) T3 = ( 0, 3, 18, 18 )
r e d p Auslastung der CPU 2 5 2 7 3 18 + + = 86 % Der RMS-Algorithmus ist der am besten untersuchte und der am häufigsten eingesetzte Algorithmus.
Anim
Die Prioritäten der Prozesse sind umgekehrt proportional zur Länge der Deadlines.
Feste Prioritäten
Deadline Periode
Beispiel: T1 = ( 0, 2, 3, 5 ) T2 = ( 0, 3, 10, 10 ) T3 = ( 0, 4, 8, 20 )
r e d p
1 2
5 10 15 20 Prozesse
T1 T2 T3
4 5 3 6
Deadline verletzt !
T1 = ( 0, 1, 3, 3 ) T2 = ( 0, 1, 4, 4 ) T3 = ( 0, 2, 5, 5 )
Mit DMS nicht lösbar
1 2
5 10 15 20 Prozesse
T1 T2 T3
4 5 3
Deadline verletzt !
3
Erfüllbarkeitstest
Prüft, ob alle Deadlines eingehalten werden können.
CPU Auslastung CPU Auslastung 90%
T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
r e d p
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 ) Priorität ( T1 ) > Priorität ( T2 )
25 50 75 100 125 150
r e d p
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 ) Priorität ( T1 ) > Priorität ( T2 )
25 50 75 100 125 150
d1 d1 d2 d2
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 ) Priorität ( T1 ) > Priorität ( T2 )
25 50 75 100 125 150
d1 d1 d2 d2
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 ) Priorität ( T1 ) > Priorität ( T2 )
25 50 75 100 125 150
d1 d1 d2 d2
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 ) Priorität ( T1 ) > Priorität ( T2 )
25 50 75 100 125 150
d1 d1 d2 d2 T2 verpasst die erste Deadline
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 ) Priorität ( T1 ) < Priorität ( T2 )
25 50 75 100 125 150
d1 d1 d2 d2
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 ) Priorität ( T1 ) < Priorität ( T2 )
25 50 75 100 125 150
d1 d1 d2 d2 T1 verpasst die erste Deadline
Früheste Deadline zuerst Der Prozess mit der nächsten Deadline wird als nächster abgearbeitet.
1 2
5 10 15 20 Prozesse
T1 T2 T3
3 T1 = ( 0, 1, 3, 3 ) T2 = ( 0, 1, 4, 4 ) T3 = ( 0, 2, 5, 5 )
1 2
5 10 15 20 Prozesse
T1 T2 T3
3 4 6 9 11 13 16 5 8 12 14 10 15 7 T1 = ( 0, 1, 3, 3 ) T2 = ( 0, 1, 4, 4 ) T3 = ( 0, 2, 5, 5 )
Kleinster zeitlicher Spielraum Der Prozess mit der kleinsten Zusatzzeit wird als nächster abgearbeitet.
Zeitlicher Spielraum
5 10 15 20 Prozesse
T1 T2
T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
T1 T2
3 4 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
T1 T2
3 3 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
3 2 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
T1 T2
t
5 10 15 20 Prozesse
t1 t2
2 2 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
1 2 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
1 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
1 3 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
2 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
2 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
2 4 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
2 3 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
3 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
3 3 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
3 2 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
2 2 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
1 2 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
1 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
5 10 15 20 Prozesse
t1 t2
T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
t
Prozesse
t1 t2
5 10 15
T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
Prozesse
t1 t2
5 10 15 20
1 2 3 5 6 4 7
25
8 10
30 35
9 T1 = ( 0, 3, 6, 6 ) T2 = ( 0, 4, 8, 9 )
idle
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
5 9
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
5 8
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
5 7
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
5 6
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
5 5
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
5 4
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4
5
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4 9
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4 8
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
8 5
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
7 5
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
6 5
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
5 5
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4 5
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
4 4
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
3
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
CPU Auslastung 90% T1 = ( 0, 25, 50, 50 ) T2 = ( 0, 30, 75, 75 )
25 50 75 100 125 150
d1 d1 d2 d2
d1
idle
Echtzeitbetriebssysteme müssen Zeitanforderungen
Scheduling wird häufig durch Prioritätsvergabe gesteuert Prioritäten können statisch oder dynamisch vergeben
Wir haben vier grundlegende Algorithmen besprochen Was noch fehlt: Scheduling mit abhängigen Prozessen