-
Notifications
You must be signed in to change notification settings - Fork 0
Realzeitnachweis
Die Prozesszeiten, Deadlines und Phasen wurden auf der Seite Realzeitsystem im Abschnitt Anforderungen hergeleitet.
Die maximalen Ausführungszeiten der Tasks wurden in mehreren Tests gemessen. Die Prioritäten werden anhand der maximalen Ausführungszeit und der minimalen Prozesszeit vergeben. Damit erhalten die Tasks in dieser Reihenfolge absteigende Prioritäten: Mapper, Simulation, Interpreter, Input.
Zusammenfassend gelten für die Tasks folgende Werte:
Wert | Mapper | Simulation | Interpreter | Input |
---|---|---|---|---|
tEMax | 0ms | 124ms | 117ms | 940ms |
tPMin | 2331ms | 333ms | 2331ms | 2331ms |
tDMax | 31ms | 333ms | 400ms | 1900ms |
tDMin | 0ms | 0ms | 0ms | 0ms |
tPH | 0ms | 0ms | 0ms | 0ms |
Priorität | 99 | 98 | 97 | 96 |
Die Ausführungszeiten der kritischen Bereiche wurden in mehreren Tests gemessen.
Folgende Werte haben sich ergeben:
Audioqueue | Hypothesenqueue | Simulation | Audiopufferpool | Stringpool | |
---|---|---|---|---|---|
Mapper | - | 0.4ms | 0.2ms | - | 0.3ms |
Simulation | - | - | 0.8ms | - | - |
Interpreter | 0.4ms | 0.1ms | - | 0.3ms | 0.3ms |
Input | 0.1ms | - | - | 0.3ms | - |
Priority Ceiling | 97 | 99 | 99 | 97 | 99 |
Die Tasks sind in der Tabelle entsprechend ihrer Priorität geordnet (höchste oben). Nun werden die Blockierzeiten der Tasks entsprechend den Regeln für Round Robin mit statischen Prioritäten und Priority Inheritance Protocoll berechnet.
Mapper
tBT = 0.8ms + 0.3ms = 1.1ms
tBR = 0.1ms + 0.8ms + 0.3ms = 1.2ms
tB = 1.1ms
Simulation
tBT = 0.3ms
tBR = 0.1ms + 0.3ms = 0.4ms
tB = 0.3ms
Interpreter
tBT = 0.3ms
tBR = 0.1ms + 0.3ms = 0.4ms
tB = 0.3ms
Input
tB = 0
Die Blockierzeiten sehen also wie folgt aus:
Wert | Mapper | Simulation | Interpreter | Input |
---|---|---|---|---|
tB | 1.1ms | 0.3ms | 0.3ms | 0.0ms |
Für das Testen der Realzeitbedingungen wurde die Applikation realzeitNachweis verwendet. Diese liest eine Inidatei mit den Daten der Tasks ein und vollführt einen hinreichenden wie auch einen notwendigen Scheduling Test (für Round Robin mit statischen Prioritäten).
Der Auslastungsgrenzwert bei 4 Tasks beträgt 0.7568. Für die einzelnen Tasks fallen die Werte wie folgt aus:
Wert | Mapper | Simulation | Interpreter | Input |
---|---|---|---|---|
u | 1.1951 | 1.1605 | 1.1604 | 1.1596 |
uMax | 0.7568 | 0.7568 | 0.7568 | 0.7568 |
Damit erfüllt keine der Tasks die hinreichende Bedingung. Daher muss die notwendige Bedingung für alle Tasks angewendet werden. |
Durch das iterative Verfahren der notwendigen Bedingung ergeben sich die folgenden maximalen Reaktionszeiten der Tasks:
Wert | Mapper | Simulation | Interpreter | Input |
---|---|---|---|---|
tRMax | 0.0ms | 124.3ms | 241.3ms | 1801.0ms |
tDMax | 31ms | 333ms | 400ms | 1900ms |
Damit sind sämtlich maximale Reaktionszeiten kleiner als die maximalen Deadlines der Tasks und die notwendige Bedingung ist für alle Tasks im System erfüllt. Das System ist also ein Realzeitsystem.
Das System wurde einem Belastungstest ausgesetzt. Dabei wurde durch externe Tasks eine hohe CPU-Last (doSomeWork) und eine hohe IO-Last (doSomeIO) verursacht. Trotz dieser Belastung wurden alle Deadlines zu jedem Zeitpunkt eingehalten. Die Worst-Case Fälle nach einigen Tests sind wie folgt ausgefallen.
Wert | Mapper | Simulation | Interpreter | Input |
---|---|---|---|---|
tRMax | 0ms | 113ms | 178ms | 1205ms |