4.3 Aufbau von Echtzeitbetriebssystemen

Slides:



Advertisements
Ähnliche Präsentationen
Die Schulkonsole für Lehrerinnen und Lehrer
Advertisements

Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
RM Optimalität RM ist bzgl. Zulässigkeit optimal unter den präemptiven Scheduling-Verfahren mit festen Prioritäten. D.h. gibt es einen zulässigen Plan,
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
7.3 Scheduling Zur Erinnerung:
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
1 Was ist ein klassischer Prozess? A eine exe-Datei B log. Adressraum, Ablaufumgebung für genau einen Thread C log. Adressraum, Ablaufumgebung für eine.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
3. Berechenbarkeit Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt,
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Klassische Scheduling-Algorithmen für periodische Systeme
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
Prof. Dr. Uwe Brinkschulte Lehrstuhl für Eingebettete Systeme Robert-Mayer-Straße Sekretariat: Linda Stapleton,
Seite 1 BA Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Aug 2008 Das zeitliche Verhalten periodisch auszuführender Aktionen.
Aufgaben zum Scheduling
Systeme 1 Kapitel 5.1 Unix Scheduling WS 2009/101.
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Diskrete Methoden Schedulingalgorithmen
OpenMP Präsentation im Rahmen des Seminars
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Einführung Definitionen
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Prof. Dr. Uwe Brinkschulte Lehrstuhl für Eingebettete Systeme Robert-Mayer-Straße Sekretariat: Linda Stapleton,
2.5. Mikrocontroller-Komponenten
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Wir suchen ‘ mit m = m    ‘ c  ‘ mod 26
Christian Steinle, Joachim Gläß, Reinhard Männer
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
4. Echtzeitaspekte der Software
Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele
Entwicklung verteilter eingebetteter Systeme - Einführung
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Materialien zum Informatikunterricht (Pohlig-Häberle)
TWS/Graph HORIZONT Produkt-Präsentation Software für Rechenzentren
1 Fachtagung am Seniorenorientiertes Design und Marketing ThyssenKrupp Immobilien Design for all - Anpassungen im Wohnungsbestand 1.Demographie.
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
4) Task-Verwaltung Inhalte Eigenschaften von Rechenprozessen (Tasks)
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Analyse von Ablaufdiagrammen
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Prozess-synchronisation
Thread Synchronisation in JAVA
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Symmetrische Blockchiffren DES – der Data Encryption Standard
Das IT - Informationssystem
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Systemsoftware und Betriebssysteme
Studiengang Informatik FHDW
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Parallelisierung für Multiprozessor-Maschinen
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
Das IT - Informationssystem
SAP Seminar 2007 Organisationsobjekte anlegen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Monatsbericht Ausgleichsenergiemarkt Gas – November
2.3 Implementierung von Prozessen
Hier wird Wissen Wirklichkeit Organic Computing – Teil 3c, Folie 1 - Prof. Dr. Uwe Brinkschulte Middleware:in verschiedenen Kontexten gebrauchter Begriff,
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
 Präsentation transkript:

4.3 Aufbau von Echtzeitbetriebssystemen Aufgaben eines Standardbetriebssystems: Taskverwaltung: Steuerung und Organisation der durchzuführenden Verarbeitungsprogramme (Tasks)  Zuteilung des Prozessors an Tasks. Betriebsmittelverwaltung: Zuteilung von Betriebsmittel an Tasks: – Speicherverwaltung: Zuteilung von Speicher – IO-Verwaltung: Zuteilung von IO-Geräten Interprozesskommunikation: Die Kommunikation zwischen den Tasks Synchronisation: Zeitliche Koordination der Tasks Schutzmaßnahmen: Der Schutz der Betriebsmittel vor unberechtigten Zugriffen Zusätzliche Aufgaben eines Echtzeitbetriebssystems: Wahrung der Rechtzeitigkeit und Gleichzeitigkeit Wahrung der Verfügbarkeit

4.3 Aufbau von Echtzeitbetriebssystemen Ein Schichtenmodell für informationsverarbeitende Systeme Anwendung Mn Schicht n Mn-1 Schicht n-1 Abstrakte Maschinen Funktionalität von Mn setzt auf Funktionalität (Dienste) von Mn-1 auf . . . M2 Schicht 2 M1 Schicht 1 M0 Funktionalität des Realen Prozessors Realer Prozessor

4.3 Aufbau von Echtzeitbetriebssystemen Schichtenmodell eines Makrokernbetriebssystems Anwendung M6 Kommando- Interpreter API API (Application Program Interface) M5 Taskverwaltung Zuteilung des Prozessors an die Tasks M4 Betriebsmittelverwaltung M3 Speicher- verwaltung Ein-/Ausgabe- verwaltung Betriebssystemkern Zuteilung von Ressourcen an die Tasks M2 Ein-/Ausgabesteuerung Logische E/A Steuerung M1 Gerätetreiber M0 Realer Prozessor Betriebssystemkern im Kernelmode, Usermode für Anwendung

4.3 Aufbau von Echtzeitbetriebssystemen Schichtenmodell eines Mikrokernbetriebssystems Anwendung M 7 Kommando- Interpreter API M 6 Vorteile Mikrokern: sehr gut anpassbar an Aufgabe Hohe Skalierbarkeit durch Erwei- terungsmodule Einfache Portierbarkeit Preemptiver Kern Kurze kritische Bereiche Taskverwaltung M 5 Betriebsmittelverwaltung Erweiterungsmodule im Usermode M 4 Speicher- verwaltung Ein-/Ausgabe- verwaltung M 3 Ein-/Ausgabesteuerung M 2 die Interprozesskommunikation die Synchronisation die elementaren Funktionen zur Taskverwaltung, dies sind i.A. das Einrichten einer Task, das Beenden einer Task, das Aktivieren einer Task, und das Blockieren einer Task Gerätetreiber M 1 Mikrokern M Realer Prozessor

4.3 Aufbau von Echtzeitbetriebssystemen Anwendung Usermode- und Kernelmode-Wechsel bei Makro- und Mikrokernbetriebssystem „Öffne Datei“ API Usermode Kernelmode Betriebsmittel- verwaltung Ein-/Ausgabe- verwaltung Ein-/Ausgabe- steuerung Gerätetreiber Festplatte a: Makrokernbetriebsystem Anwendung Festplatte „Öffne Datei“ Betriebsmittel- verwaltung Ein-/Ausgabe- verwaltung Ein-/Ausgabe- steuerung API Gerätetreiber Usermode Kernelmode Mikrokern b: Mikrokernbetriebsystem

4.3 Aufbau von Echtzeitbetriebssystemen Taskverwaltung: Tasks und Threads Anwendung Task 1 Task n . . . . . . . . . Thread 1 Thread i Thread 1 Thread j Aus Sicht der Betriebszustände, der Zeitparameter, des Schedulings und der Synchronisation sind Thread und Task gleich.

4.3 Aufbau von Echtzeitbetriebssystemen Task (schwergewichtiger Prozess) eigene Variablen und Betriebsmittel von den anderen Tasks abgeschirmt Eigener Adressraum Kommunikation nur über Interprozesskommunikation Task-Umschaltung bis zu mehrere 1000 Prozessortakte Thread (leichtgewichtiger Prozess) innerhalb einer Task. Benutzt Variablen und Betriebsmittel der Task Gemeinsamer Adressraum aller Threads innerhalb einer Task Kommunikation über beliebige globale Variable. Sehr schnelle Kommunikation und Thread-Umschaltung (wenige Takte). Wenig Schutz zwischen Threads.

4.3 Aufbau von Echtzeitbetriebssystemen Ruhend (dormant) Die Task ist im System vorhanden, aber momentan nicht ablaufbereit, da Zeitbedin-gungen oder andere Voraussetzungen (noch) nicht erfüllt sind. Ablaufwillig (runnable) Die Task ist bereit, alle Zeitbedingungen oder andere Voraussetzungen zum Ablauf sind erfüllt, die Betriebsmittel sind zugeteilt, lediglich die Zuteilung des Prozessors durch die Taskverwaltung steht noch aus. Laufend (running) Die Task wird auf dem Prozessor ausgeführt. Bei einem Einprozessorsystem kann nur eine Task in diesem Zustand sein, bei einem Mehrprozessorsystem kann dieser Zustand von mehreren Tasks gleich-zeitig angenommen werden. Blockiert (suspended, blocked) Die Task wartet auf das Eintreffen eines Ereignisses (z.B. einen Eingabewert, eine Interprozesskommunikation) oder das Frei-werden eines Betriebsmittels (Synchronisa-tion). Taskzustände/Threadzustände Einrichten der Task ablauf- willig ruhend laufend Entfernen blockiert

4.3 Aufbau von Echtzeitbetriebssystemen Beispiel: zeitlicher Ablauf der FTS-Steuerung Transponder- datenverarbeitung (2. Prior.) > 2T < 2T Laserscanner- datenverarbeitung (1. Prior.) Motor- steuerung T > T Kameradaten- verarbeitung Ruhe T 2T 3T 4T 5T 6T 7T 8T Kollisionswarnung Kollisionswarnung Landmarke Periodendauer Kameradatenverarbeitung: T Periodendauer Motorsteuerung: 2T

4.3 Aufbau von Echtzeitbetriebssystemen Zustände der Task Kameradatenverarbeitung blockiert laufend ablaufwillig ruhend T 2T 3T 4T 5T 6T 7T 8T Kollisionswarnung Kollisionswarnung Landmarke

4.3 Aufbau von Echtzeitbetriebssystemen Wesentliche Zeitparameter einer Echtzeittask ai: Ankunftszeit (Arrival Time) ri: Anforderungszeit (Request Time) si: Startzeit (Start Time) ji: Reaktionszeit (Reaction Time, Release Jitter) ei: Ausführungszeit (Execution Time) eri: Restausführungszeit (Remaining Execution Time) ci: Beendigungszeit (Completion Time) di: Zeitschranke (Deadline) pi: Periode (Period) li: Spielraum (Laxity, li = di – (t + eri) ) ri si ci ai di pi ruhend li ei ji t eri ablaufwillig laufend blockiert Task i t: aktueller Zeitpunkt

4.4 Echtzeitscheduling Aufgabe eines Echtzeitschedulers Aufteilung des Prozessors zwischen allen ablaufwilligen Tasks derart, dass – sofern möglich – alle Zeitbedingungen eingehalten werden. Fragen zur Beurteilung eines Echtzeitschedulingverfahrens Existiert für ein gegebenes Taskset überhaupt ein Schedule, das alle Zeitbedingungen einhält? Findet das verwendete Schedulingverfahren diesen Schedule? Kann dieser Schedule in endlicher Zeit berechnet werden? Ein Schedulingverfahren heißt optimal, wenn es einen Schedule findet, sofern dieser existiert

4.4 Echtzeitscheduling Analyse des Echtzeitverhaltens (Scheduling Analysis, Feasibility Analysis) Prozessorauslastung (Processor Demand). Prozessorauslastung auf einem Einprozessorsystem für ein Taskset aus n periodischen Tasks mit Zeitschranke = Periode: H > 100%: kein Schedule H ≤ 100%: Schedule existiert (wird jedoch je nach verwendetem Echtzeitschedulingverfahren nicht unbedingt gefunden)

4.4 Echtzeitscheduling Klassifizierungsmerkmale von Scheduling-Verfahren Scheduling-Verfahren Statisches Scheduling Dynamisches Scheduling Nicht-preemptives Scheduling Preemptives Scheduling Nicht-preemptives Scheduling Preemptives Scheduling Statische Prioritäten Dynamische Prioritäten Statische Prioritäten Dynamische Prioritäten Nicht prioritäts- basiert Nicht prioritäts- basiert

a) Preemptives Scheduling b) Nicht-preemptives Scheduling 4.4 Echtzeitscheduling Preemptives und nicht-preemptives Scheduling Task 1 fertig Task 1 fertig Task 1 (wichtig) Preemption Task 2 (weniger wichtig) Ruhe Ereignis für Task 2 Ereignis für Task 1 Ereignis für Task 2 Ereignis für Task 1 a) Preemptives Scheduling b) Nicht-preemptives Scheduling

4.4 Echtzeitscheduling 4.4.1 FIFO-Scheduling First In First Out Prinzip: wer zuerst kommt, erhält zuerst den Prozessor Dynamisch, nichtpreemptiv, ohne Prioriäten Wenig geeignet für Echtzeit, da keinerlei Zeitbedingungen eingehen Beispiel.: Task 1: Periode p1 = 150 msec Task 2: Periode p2 = 10 msec Ausführungszeit e1 = 15 msec Ausführungszeit e2 = 1 msec H = 15 msec / 150 msec + 1 msec / 10 msec = 0,2 = 20% Task 1 Erste Ausführung Zeitschranke Task 2 fertig für erste Task 2 Ausführung von Task 2 verpasst Ruhe 5 10 15 20 msec Ereignis Ereignis Ereignis für Task 1 für Task 2 für Task 2

4.4 Echtzeitscheduling 4.4.2 Fixed-Priority-Scheduling Jede Task erhält eine feste Priorität Dynamisches Scheduling, statische Prioritäten 2 Varianten: Fixed-Priority-Preemptive-Scheduling (FPP) Fixed Priority-Non-Preemptive Scheduling (FPN) Zuordnung der Prioritäten zu den Tasks ist entscheidend für das Echtzeitverhalten

4.4 Echtzeitscheduling Rate-Monotonic-Scheduling (RMS) Gibt eine Regel der Prioritätenzuordnung für periodische Tasks an: Es werden den periodisch auszuführenden Tasks Prioritäten umgekehrt proportional zu ihren Periodendauern zugewiesen: PRi ~ 1 / pi mit pi: Periodendauer der Task i, PRi: Priorität der Task i es wird preemptives Scheduling verwendet, die Periodendauer pi ist konstant, die Zeitschranke di ist gleich der Periodendauer pi, die Ausführungszeit ei ist konstant und bekannt, und die Tasks sind voneinander unabhängig, d.h. sie blockieren sich nicht gegenseitig z.B. durch Synchronisation Als Deadlines werden die Periodendauer angenommen

4.4 Echtzeitscheduling Beispiel: RMS bei nicht gleichzeitigem Auftreten der Ereignisse Fixed-Priority-Preemptive-Scheduling und Prioritätenverteilung gemäß dem Rate-Monotonic-Prinzip Task 1: Periode p1 = 150 msec => niedere Priorität Ausführungszeit e1 = 15 msec Task 2: Periode p2 = 10 msec => hohe Priorität Ausführungszeit e2 = 1 msec Deadlines sind die Periodendauern, H = 20% Task 2 Task 1 Ereignis für Task 2 Ruhe für Task 1 Preemption 5 10 15 20 msec

4.4 Echtzeitscheduling Beispiel: RMS bei gleichzeitigem Auftreten der Ereignisse Task 1: p1 = 150 msec, e1 = 15 msec => niedere Priorität Task 2: p2 = 10 msec, e2 = 1 msec => hohe Priorität Task 2 Task 1 Ereignis für Task 2 Ruhe für Task 1 und 2 5 10 15 20 msec Zuteilung der Prioritäten gemäß dem Rate-Monotonic-Prinzip sind essentiell. Würde man keine Preemption zulassen oder die Prioritäten anders herum verteilen, so würde im obigen Beispiel Task 2 ihre Zeitschranken verletzen.

4.4 Echtzeitscheduling RMS = Optimale Prioritätenverteilung? Behauptung: Rate-Monotonic-Scheduling liefert bei festen Prioritäten und Preemption für periodische Tasks, bei denen die Zeitschranke identisch zur Periode ist, eine optimale Prioritätenverteilung.

4.4 Echtzeitscheduling Prinzip des Beweises am Beispiel zweier Tasks, p2 > p1: e1 Task 1 Prioritätenverteilung 1 (entgegen RMS) Taskset ausführbar, wenn gilt: e1 + e2 ≤ p1 Anderenfalls verpasst Task T 1 ihre Zeitschranke e2 . . . Task 2 Ruhe p1 p2 e1 Prioritätenverteilung 2 (gemäß RMS) Aus e1 + e2 ≤ p1 folgt: T 1 wie auch T 2 terminiert vor oder spätestens zum Zeitpunkt p1 Daraus folgt: Task 1 hält ihre Zeitschranke Aus p2 > p1 folgt: Task 2 terminiert vor p2 Daraus folgt: Task 2 hält ihre Zeitschranke Task 1 e2 Task 2 . . . Ruhe p1 p2

4.4 Echtzeitscheduling Dies gilt auch für alle späteren Aufrufe, da beim ersten Aufruf durch gleichzeitige Aktivierung von Task 1 und Task 2 der schlimmste Fall bereits abgedeckt ist. Schlussfolgerung: ist Taskset mit 2 Tasks unter einer Prioritätenverteilung entgegen dem Rate-Monotonic-Prinzip (Variante 1) ausführbar, so ist es immer auch mit dem Rate-Monotonic-Prinzip (Variante 2) ausführbar. Für 2 Tasks ist Rate-Monotonic-Scheduling also eine optimale Prioritäten-zuteilung für feste Prioritäten. Die Beweisführung lässt sich leicht von zwei auf eine beliebige Anzahl Tasks erweitern ([Liu Layland 1973])

4.4 Echtzeitscheduling FTS Beispiel mit drei Aufgaben Transponder- Laserscanner- Datenverarbeitung Kamera- Transponder- Erkennung Funk- Kommunikation Motorsteuerung und -regelung FTS

Fahrgeschwindigkeit: 0,65 m/sec, Positionsgenauigkeit 1 cm 4.4 Echtzeitscheduling Daten aus industriellem FTS mit aufgeklebter Fahrspur und Landmarken Prod 1 Prod 2 FTS Lager Fahrgeschwindigkeit: 0,65 m/sec, Positionsgenauigkeit 1 cm T1: Kameradatenverarbeitung, p1 = d1 = 10 msec, e1 = 1 msec T2: Motorsteuerung, p2 = d2 = 10 msec, e2 = 5 msec T3: Transpondererkennung, d3 = 1 cm : 0,65 m/sec = 15,4 msec, e3 = 5,5 msec

4.4 Echtzeitscheduling Prozessorauslastung H = e1 / p1 + e2 / p2 + e3 / p3 = = 1 msec/10 msec + 5 msec/10 msec + 5,5 msec/15,4 msec = = 95,71% (aperiodisches Transponderereignis als schlimmster Fall mit seiner Zeitschranke periodisiert) Prioritätenvergabe gemäß RMS: T1 (Kameradatenverarbeitung): hohe Priorität T2 (Motorsteuerung): mittlere Priorität. T3 (Transpondererkennung): niedrige Priorität oder: T1 (Kameradatenverarbeitung): mittlere Priorität. T2 (Motorsteuerung): hohe Priorität T3 (Transponderdatenerkennung): niedrige Priorität

4.4 Echtzeitscheduling Ablauf des FTS Beispiels mit Priorität T1 > T2 > T3 Kameradaten verarbeitung (T1) 1 msec 1 msec 5 msec 5 msec Motorsteuerung (T2) Preemption 4 msec 1,5 msec Transponder- Erkennung (T3) Ruhe Zeitschranke T1&T2 Zeitschranke T3 um 2,1 msec verpasst 5 10 15 20 msec Ereignis für T1, T2 und T3 Ereignis für T1und T2

4.4 Echtzeitscheduling Ablauf des FTS Beispiels mit Priorität T2 > T1 > T3 Kameradaten- 1 msec 1 msec verarbeitung (T1) 5 msec 5 msec Motorsteuerung Preemption (T2) 4 msec 1,5 msec Transponder- Erkennung (T3) Ruhe Zeitschranke T1& T2 Zeitschranke T3 um 2,1 msec verpasst 5 10 15 20 msec Ereignis für T1, T2 und T3 Ereignis für T1 und T2

4.4 Echtzeitscheduling Daraus folgt: Feste Prioritäten mit Preemption ist kein optimales Schedulingverfahren. Obergrenze der Prozessorauslastung ist mathematisch ermittelbar, bis zu der immer ein ausführbarer Schedule für Rate-Monotonic-Scheduling mit Preemption gefunden wird. Hmax = n(21/n – 1), n = Anzahl der Tasks Bsp.: Hmax = 3 (21/3 -1) = 0,78 = 78%

4.4 Echtzeitscheduling 4.4.3 EDF-Scheduling Bei Earliest-Deadline-First-Scheduling (EDF) erhält diejenige Task den Prozessor zugeteilt, die am nächsten an ihrer Zeitschranke (Deadline) ist. => Prioritäten ergeben sich automatisch und dynamisch aus den Zeitschranken. Dynamisches Scheduling, dynamische Prioritäten, preemptiv oder nicht-preemptiv Preemptives EDF-Scheduling auf Einprozessorsystemen liefert optimales Scheduling Hmax = 100% EDF findet für periodische Tasks mit di = pi einen Schedule, wenn gilt: ei / pi ≤ 1

4.4 Echtzeitscheduling Ablauf des FTS-Beispiels mit EDF-Scheduling Kameradaten- verarbeitung (T1) 1 msec 1 msec 5 msec 5 msec Motorsteuerung (T2) 5,5 msec Transponder- Erkennung (T3) Ruhe Zeitschranke T1&T2 Zeitschranke T3 Zeitschranke T1&T2 5 10 15 20 msec Ereignis für T1, T2 und T3 Ereignis für T1 und T2 Ereignis für T1 und T2

4.4 Echtzeitscheduling 4.4.4 LLF-Scheduling Bei Least-Laxity-First-Scheduling (LLF) erhält diejenige Task den Prozessor zugeteilt, die den geringsten Spielraum (Laxity) hat. Dynamisches Scheduling, dynamische Prioritäten, preemptiv oder nicht-preemptiv Preemptives LLF ist wie EDF ein optimales Schedulingverfahren auf Einprozessorsystemen, Hmax = 100%. Für den Spielraum gilt li = di – (t + eri) LLF erzeugt eine drastisch höhere Anzahl an Taskwechseln als EDF Aber besseres Verhalten als EDF bei Überlast

4.4 Echtzeitscheduling Ablauf des FTS Beispiels mit LLF-Scheduling

4.4 Echtzeitscheduling 4.4.5 Time-Slice-Scheduling Time-Slice-Scheduling (Zeitscheibenverfahren) ordnet jeder Task eine feste Zeitscheibe (Time Slice) zu. Die Reihenfolge der Taskausführung entspricht hierbei der Reihenfolge der ablaufwilligen Tasks in der Taskverwaltungsliste des Betriebssystems. Die Dauer der Zeitscheibe für eine Task kann individuell festgelegt werden. Preemptives dynamisches Scheduling ohne Prioritäten. Task 1, ablaufwillig, Zeitscheibe 1 Task 2, nicht ablaufwillig, Zeitscheibe 2 Task 3, Zeitscheibe 3 Task n, Zeitscheibe n . . . Einfaches Verfahren, bei feinkörnigen Zeitscheiben nahe an der Optimalität, aber Periodendauer abhängig von der Anzahl der Tasks

4.4 Echtzeitscheduling Ablauf des FTS-Beispiels mit Time-Slice-Scheduling T1: H1 = e1 / p1 = 1 msec / 10 msec = 10% T2: H2 = e2 / p2 = 5 msec / 10 msec = 50% T3: H3 = e3 / p3 = 5,5 msec / 15,4 msec = 36% (35,714%) Die Zeitscheiben wurden auf der Proportionalitätsbasis 1% ≡ 0,05 msec wie folgt gewählt: T1: Zeitscheibe 0,5 msec (~ 10%) T2: Zeitscheibe 2,5 msec (~ 50%) T3: Zeitscheibe 1,8 msec (~ 36%) Motorsteuerung (T2) Kameradaten- verarbeitung (T1) Ereignis für T1 und T2 Ruhe für T1, T2 und T3 5 10 15 20 msec Zeitschranke T3 Transponder- erkennung (T3) 0,5 msec 2,5 msec 1,8 msec Zeitschranke T1&T2 0,1 msec Slice T1 = 0,5 msec T3 fertig T2 fertig Slice T2 = 2,5 msec Slice T3 = 1,8 msec T1 fertig T2 fertig

4.4 Echtzeitscheduling 4.4.6 Guaranteed Percentage Scheduling Guaranteed Percentage Scheduling (GP) ordnet jeder Task einen festen Prozentsatz der verfügbaren Prozessorleistung innerhalb einer Periode zu (virtueller Prozessor pro Task) Preemptives dynamisches Schedulingverfahren ohne Prioritäten Periodendauer unabhängig von der Anzahl der Tasks Auf Einprozessorsystemen ein optimales Schedulingverfahren: Hmax = 100% Bei periodischen Tasks werden die Zeitschranken erfüllt, wenn gilt: ei / pi ≤ 1 Viele Taskwechsel wie bei LLF Für mehrfädige Prozessoren geeignet.

4.4 Echtzeitscheduling Beispiel Komodo-Mikrocontroller, GP Periode 100 Taktzyklen (vgl. Abschnitt 2.6) Thread A, 30% Thread B, 20% Thread C, 40% Thread A 30 Taktzyklen Thread B 20 Taktzyklen Thread C 40 Taktzyklen . . . 100 Taktzyklen

4.4 Echtzeitscheduling T1: H1 = e1 / p1 = 1 msec / 10 msec = 10% T2: H2 = e2 / p2 = 5 msec / 10 msec = 50% T3: H3 = e3 / p3 = 5,5 msec / 15,4 msec = 36% (35,714 %) Hierdurch ergibt sich für jede Task eine Ausführungszeit, die ihrer Periode und damit ihrer Zeitschranke entspricht: T1: Ausführungszeit: 1 msec in 10 msec (10%) T2: Ausführungszeit: 5 msec in 10 msec (50% ) T3: Ausführungszeit: 5,5 msec in 15,3 msec (36%) Ablauf des FTS-Beispiels mit Guaranteed Percentage Scheduling Motorsteuerung (T2) Kameradaten- verarbeitung (T1) Ereignis für T1 und T2 Ruhe für T1, T2 und T3 5 10 15 20 msec Zeitschranke T3 Transponder- erkennung (T3) Zeitschranke T1&T2 fertig T3 fertig T1 und T2

4.5 Synchronisation und Kommunikation 4.5.1 Synchronisation gemeinsamer Betriebsmittel Gemeinsame Betriebsmittel Daten Geräte Programme Temperatur- Sensoren auslesen Verteilung in Tabelle ablegen Tabelle lesen Verteilung ausdrucken Konkurrierender Zugriff Task 1 Task 2 Beispiel: gemeinsam genutzte „Temperatur- Tabelle“

4.5 Synchronisation und Kommunikation Synchronisation – Variante 1 Die Sperrsynchronisation Temperatur Sensoren auslesen Temperatur- Tabelle ablegen Tabelle lesen Verteilung ausdrucken Task 1 Task 2 Mutex für Tabelle belegen Tabelle freigeben Sperr- synchronisation kritischer Bereich

4.5 Synchronisation und Kommunikation Synchronisation – Variante 2 Die Reihenfolgensynchronisation Temperatur- Sensoren auslesen Verteilung in Tabelle ablegen Tabelle lesen Verteilung ausdrucken Task 1 Task 2 Reihenfolgen- synchronisation Task blockiert

4.5 Synchronisation und Kommunikation Ein Semaphore besteht aus: einer Zählvariablen zwei nicht unterbrechbaren Operationen P (Passieren) und V (Verlassen) Task blockieren Zähler := Zähler - 1 Zähler<0 ? P eine blockierte Task bereit machen Zähler := Zähler + 1 Zähler<1 ? V nein nein ja ja Bei Standardbetriebssystemen: Bereitmachen einer beliebigen wartenden Task bei V Bei Echtzeitbetriebssystemen: Bereitmachen der höchstprioren wartenden Task bei V

4.5 Synchronisation und Kommunikation Initialisiere Semaphore S1= 1 Passiere(S1) Verlasse(S1) Zugriff auf geschützte Betriebsmittel Task 1 Task 2 blockiert Task 2 freigegeben Sperrsynchronisation mit einem Semaphore Diese Form des Semaphore-Einsatzes heißt auch Mutex (Mutual Exclude)

4.5 Synchronisation und Kommunikation Reihenfolgen-synchronisation mit zwei Semaphoren Task 1 Task 2 Initialisiere Semaphore S1=0 Initialisiere Semaphore S2=1 Passiere(S1) Passiere(S2) Task 1 blockiert Aktivität Task 2 Verlasse(S1) Task 1 freigegeben Aktivität Task 1 Passiere(S2) Task 2 blockiert Verlasse(S2) Task 2 freigegeben Aktivität Task 2 Passiere(S1) Task 1 blockiert Verlasse(S1) Task 1 freigegeben

4.5 Synchronisation und Kommunikation Erzeuger-/Verbraucher-Synchronisation mit zwei Semaphoren Task "Erzeuger" Task "Verbraucher" Initialisiere Semaphore Leerungen = n Initialisiere Semaphore Füllungen = 0 Passiere(Leerungen) Passiere(Füllungen) Erzeuge Objekt Verbrauche Objekt Leerungen: Freie Plätze für Objekte des Erzeugers, Füllungen: erzeugte Objekte für Verbraucher Verlasse(Füllungen) Verlasse(Leerungen)

4.5 Synchronisation und Kommunikation Temperatur- und Druck- Sensoren auslesen Temperatur- Verteilung in Tabelle ablegen Task 1 Task 2 Mutex für Tabelle belegen Tabelle freigeben kreuzweise Betriebsmittel- belegung Mutex für Druck- Druck-Verteilung In Druck-Tabelle ablegen Tabelle lesen Druck- Druck- Verteilung ausdrucken Verklemmungen Deadlock (Blockierung, Deadly Embrace): mehrere Tasks warten auf die Freigabe von Betriebsmitteln, die sich gegenseitig blockieren. Beispiel: kreuzweise Betriebsmittelbelegung Gegenmaßnahmen: Abhängigkeitsanalyse Vergabe der Betriebsmittel in gleicher Reihenfolge Timeout

4.5 Synchronisation und Kommunikation Ein Deadlock durch Programmierfehler Gegenmaßnahme: höhere Synchronisationskonstrukte (z.B. Monitore) Initialisiere Semaphore S1 = 1 Zugriff auf geschützte Betriebsmittel Task 1 Task 2 Passiere(S1) Verlasse(S1)

4.5 Synchronisation und Kommunikation Verklemmungen Livelock (Starvation, Aushungern): eine Task wird durch andere Tasks ständig an der Ausführung gehindert. Beispiel: eine hochpriore Task verhindert ständig die Ausführung einer niederprioren Task Auch hochpriore Tasks können „Opfer“ von Livelocks werden, Problem Prioritäteninversion

4.5 Synchronisation und Kommunikation Prioritäteninversion Task 1 hohe Priorität Task 2 niedere Mutex Ereignis für Task 1 Ruhe für Task 2 Zeit Task 2 belegt Task 1 versucht, Mutex zu belegen, wird blockiert Task 2 gibt Mutex frei Prioritäteninversion

4.5 Synchronisation und Kommunikation Mutex Task 1 hohe Priorität Task 2 niedere Task 3 mittlere Task 2 Task 1 Ereignis für Task 1 Ruhe für Task 2 Zeit Livelock, Task 1 ist längerfristig blockiert Task 3 für Task 3 Task 2 belegt Mutex Task 1 versucht, Mutex zu belegen, wird blockiert Ein Livelock durch Prioritäten-inversion

4.5 Synchronisation und Kommunikation Mutex mit Prioritäten- vererbung Task 1 hohe Priorität Task 2 niedere Task 3 mittlere Task 2 Task 1 Ereignis für Task 1 Ruhe für Task 2 Zeit Prioritätenvererbung, Task 2 erhält die Priorität von Task 1 (daher keine Unter- brechung durch Task 3) Task 3 für Task 3 Task 1 ist fertig Task 2 belegt Mutex Task 1 versucht, Mutex zu belegen, wird blockiert Task 2 gibt Mutex frei Vermeidung des Livelocks durch einen Mutex mit Prioritäten-vererbung

4.5 Synchronisation und Kommunikation 4.5.2 Task-Kommunikation Zwei grundlegende Varianten der Task-Kommunikation: Gemeinsamer Speicher (schneller) Nachrichten Bei Echtzeitbetriebssystemen: Wahrung der End-zu-End-Prioritäten durch prioritäts-basierte Kommunikation (hochprioreNachrichten überholen niederpriore,keine Bockierung) Task 1, Priorität n Kommunikation Task 2, Priorität n Priorität n

4.5 Synchronisation und Kommunikation Weiteres Unterscheidungsmerkmal zeitliche Koordination Synchrone Kommunikation Asynchrone Kommunikation Task 1 Task 2 Task 1 Task 2 Warte_auf_Nachricht Prüfe_ob_Nachricht _vorhanden Task 2 blockiert Sende_Nachricht Sende_Nachricht Hole_Nachricht Prüfe_ob_Nachricht _vorhanden Hole_Nachricht a) synchrone Kommunikation b) asynchrone Kommunikation

4.5 Synchronisation und Kommunikation Für asynchrone Kommunikation: der Kommunikationskanal muss Botschaften puffern Konzepte: Briefkasten: individuelle Botschaftenwarteschlange zwischen Sender und Empfänger Port: spezielle Form des Briefkastens, bei der mehrere Sender Daten mit einem Empfänger austauschen können Task "Erzeuger" Task "Verbraucher" Empfange(Verbrau- cher, Port, Priorität, Leerbotschaft) for i:= 1 to n do Sende(Erzeuger, Port, Priorität, Leerbotschaft) Erzeuge Objekt Vollbotschaft Empfange(Erzeuger, Port, Priorität, Vollbotschaft) Beispiel nachrichtenbasierter Kommunikation: Botschaftenaustausch Sende(Verbraucher, Port, Priorität, Vollbotschaft) Vollbotschaft  Verbrauche Objekt Sende(Erzeuger, Port, Priorität, Leerbotschaft)

4.5 Synchronisation und Kommunikation Entfernter Prozeduraufruf mittels Botschaftenaustausch Ausgangsrechner Zielrechner 1 3 Task Stellvertreter (Stub) Stellvertreter (Skeleton) Prozedur 6 4 2 5 Netzwerk, Feldbus, ... (1), (3), (4), (6) - Prozeduraufrufe (2), (5), - Botschaftentransfer

4.6 Speicher- und IO-Verwaltung 4.6.1 Speicherverwaltung Die Speicherverwaltung teilt den verfügbaren Speicher mittels einer Speicherabbildungsfunktion M zu: M: logische Adresse → physikalische Adresse Logische Adresse: Speicheradresse innerhalb einer Task Physikalische Adresse: wirkliche Arbeitsspeicheradresse Modelle der Speicherverwaltung: Speicherzuteilung: Statische Speicherzuteilung Dynamische Speicherzuteilung Nichtverdrängende Speicherzuteilung Verdrängende Speicherzuteilung  Adressbildung und Adressierung: Reelle Adressierung Virtuelle Adressierung Lineare Adressbildung Streuende Adressbildung  

4.6 Speicher- und IO-Verwaltung Lineare Adressbildung durch Segmente, statische Zuteilung, reelle Adressierung, keine Verdrängung Vorteile: Tasks im Speicher verschiebbar Tasks gegeneinander geschützt Zeitverhalten sehr gut vorhersagbar Nachteile: Speicherschema starr, nicht online änderbar Für jede Task maximaler Speicher Bei variierender Anzahl von Tasks muss für alle Tasks Speicher reserviert werden, kein Teilen von Speicher zwischen Tasks Segment 1 (log. Adressraum Task 1) Segment 2 (log. Adressraum Task 2) physikalischer Adressraum Segment 3 (log. Adressraum Task 3) unbenutzt Bevorzugte Lösung für eingebettete Systeme mit einfachen Mikrocontrollern

4.6 Speicher- und IO-Verwaltung Lineare Adressbildung durch Segmente, dynamische Zuteilung, reelle Adressierung, keine Verdrängung Segment 1 Task 1 32 kBytes Segment 2 Task 2 48 kBytes unbenutzt, physikalischer Adressraum Segment 3 Task 3 30 kBytes unbenutzt 18 kBytes wird ablaufwillig beendet Segment 4 Task 4 20 kBytes Task 4 Tasks können sich phys. Speicher teilen, so lange keine Verdrängung ist die Zugriffszeit konstant. Speicherbereinigung wegen löchrigem Speicher.

4.6 Speicher- und IO-Verwaltung Lineare Adressbildung mit Speicherbereinigung physikalischer Adressraum Task 5 32 kBytes wird ablaufwillig Segment 1 Task 1 32 kBytes Segment 4 Task 4 20 kBytes Segment 3 Task 3 30 kBytes unbenutzt 18 kBytes 36 kBytes Seg ment 3 4 kBytes Segment 5 kompaktifizieren Wegen Segmentverschiebungen für Echtzeit problematisch.

4.6 Speicher- und IO-Verwaltung Lineare Adressbildung mit virtueller Adressierung und Verdrängung physikalischer Adressraum Segment 1 Segment 4 unbenutzt logischer Adressraum Segment 2 Segment 3 Peripherie- speicher ausgelagert (verdrängt) eingelagert Task 1 Task 2 Task 3 Task 4 Verdrängungsstrategien (auslagern): FIFO (First In First Out), am längsten im Sp. LRU (Least Recently Used), a. l. nicht mehr ben. LFU (Least Frequently Used), am seltensten ben. LRD (Least Reference Density), ger. Zugriffsdichte Zuteilungsstrategien (einlagern, wohin): First Fit (erstes) Best Fit (kleinstes) Worst Fit (größtes) Nachschubstrategien (wann einlagern): Verlangend (Demand Fetch) Vorausschauend (Anticipatory Fetch) Echtzeitbetriebsysteme: Verriegeln von einzelnen Tasks, d.h. keine Verdrängung

4.6 Speicher- und IO-Verwaltung Taskzustände bei verdrängender Speicherverwaltung ruhend laufend blockiert Einrichten der Task Entfernen ablauf- willig, verdrängt eingelagert

4.6 Speicher- und IO-Verwaltung Realisierung der linearen Adressbildung mit Segmenten m Bit Segmentadresse Offsetadresse + in der Segmentdeskriptor- Tabelle im Arbeitsspeicher virtuelle Adresse physikalische Adresse v Bit p Bit n Bit Segmentdeskriptor Segmenttyp physikalische Segment- Startadresse Segmentlänge Zugriffsrechte Segment verdrängt ... phys. Deskriptor- Tabellen-Startadresse

4.6 Speicher- und IO-Verwaltung Streuende Adressbildung: Aufteilung der Tasks auf Seiten Seite 1 Task 1 Task 1 Seite 2 Seite 3 Seite 4 Task 1 Seite 5 Seite 6 Task 2 Seite 7 Task 1 Seite 8 Seite 9 Seite 10 Task 1 Task 3 unbenutzt Seite 11 Seite 12

4.6 Speicher- und IO-Verwaltung Physik. Adressraum Die Zuordnung von Seiten zu Kacheln erfolgt in der Regel ohne Beachtung der sequentiellen Reihenfolge der Seiten Vorteile: einfache Zuweisung, keine Zuteilungsstrategie dynamische Taskgrößenänd. einfacher und zeitlich besser vorhersagbar keine Speicherbereinigung Virtuelle Adressierung benötigt nur Verdrängung- und Nachschubsstrategie Nachteile: letzte Seite nur teilweise voll höherer Seitenverwaltungsaufwand durch kleine Seiten mehr Datentransfers zwischen Haupt- und Peripheriespeicher Kachel 1 Task 1 Kachel 2 logischer Adressraum Kachel 3 Kachel 4 Task 1 Seite 1 Task 1 Kachel 5 Task 1 Seite 2 Kachel 6 Seite 3 Kachel 7 Task 1 Seite 4 Task 1 Kachel 8 Seite 5 Kachel 9 Seite 6 Task 2 Kachel 10 Task 1 Seite 7 Task 1 unbenutzt Kachel 11 Seite 8 Kachel 12 Seite 9 Kachel 13 Seite 10 Task 1 Kachel 14 Task 3 unbenutzt Seite 11 Kachel 15 Task 1 Seite 12 unbenutzt Kachel 16 Kachel 17 Streuende Adressbildung: Zuordnung von Seiten zu Kacheln Kachel 18 Kachel 19 Kachel 20 Task 1 unbenutzt Kachel 21 Kachel 22 . . .

4.6 Speicher- und IO-Verwaltung Realisierung der streuenden Adressbildung mit Seiten Seitentabelle im Arbeitsspeicher Seitenadresse Offsetadresse k logische Adresse physikalische Adresse v Bit p Bit m Bit m-p Bit n Bit Startadresse der phys. Seitentabelle + k = Konkatenation Kachelnummer der Seite

4.6 Speicher- und IO-Verwaltung Hierarchischer Aufbau der Seitentabellen Seitenverzeichnis- adresse Seitenadresse Offsetadresse Seiten- tabellen- verzeichnis tabelle k logische Adresse physikalische Adresse

4.6 Speicher- und IO-Verwaltung Kombination von linearer und streuender Adressbildung logische Adresse Segmentadresse Seitenadresse Offsetadresse Kombination der Vorteile

4.6 Speicher- und IO-Verwaltung Aufgaben der IO-Verwaltung: Zuteilen und Freigeben von Geräten Benutzen von Geräten Die angeschlossenen Geräte unterscheiden sich hierbei stark in Geschwindigkeit und Datenformat => das Betriebssystem muss dem Anwender- programm die Schwierigkeiten der Kommunikation abnehmen und einfache, transparente Schnittstellen zur Verfügung stellen Tasks Ein- /Ausgabesteuerung Ein- /Ausgabe- verwaltung Gerätetreiber (hardwareabhängig) Hardware (Geräte) Architektur der Ein-/Ausgabeverwaltung

4.6 Speicher- und IO-Verwaltung Die wichtigsten Teilfunktionen der Ein/Ausgabe- steuerungsschicht sind: Symbolische Namensgebung Annahme von Ein-/Ausgabeanforderungen Vergabe und Zuteilung von Geräten Synchronisation Schutz der Geräte Kommunikation mit den Gerätetreibern Pufferung Einheitliches Datenformat

4.6 Speicher- und IO-Verwaltung Synchronisationsmechanismen Schnittstellenbaustein Steuerbus Statusregister Eingaberegister Steuer- Signale Adressbus Steuerung Steuerregister Eingaberegister Ein/Ausgabe- Daten Datenbus Datenregister Eingaberegister Prozessor, Bus Gerät

4.6 Speicher- und IO-Verwaltung Synchronisation durch Polling Task Schnittstellenbaustein Gerät Gerät initialisieren: Steuerregister schreiben Gerät nimmt Tätigkeit auf Statusregister lesen Datum ins Datenregister übertragen Gerät bereit ? bereit nein ja Datenregister lesen Einfach, hohe Übertragungsleistung bei einem Gerät Prozessor ständig aktiv, keine Nebenaktivitäten Datum verarbeiten

4.6 Speicher- und IO-Verwaltung Polling von mehreren Geräten innerhalb einer Task Gerät 1 bereit ? ja Gerät 1 behandeln nein Gerät 2 bereit ? ja Gerät 2 behandeln nein . . . Verlangsamte Reaktionszeit bei mehreren Geräten ja Gerät n bereit ? Gerät n behandeln nein

4.6 Speicher- und IO-Verwaltung Synchronisation durch Busy Waiting Task Schnittstellenbaustein Gerät Gerät initialisieren: Steuerregister schreiben Gerät nimmt Tätigkeit auf Statusregister lesen Kurze Aktivität durchführen Datum ins Datenregister übertragen Gerät bereit ? bereit nein ja Datenregister lesen Nebenaktivitäten möglich Verlangsamte Reaktionszeit, Nebenaktivität muss in kleine Teilschritte aufgeteilt werden Datum verarbeiten

4.6 Speicher- und IO-Verwaltung Synchronisation durch Unterbrechung Task Schnittstellenbaustein Gerät Gerät initialisieren: Steuerregister schreiben Gerät nimmt Tätigkeit auf . . . Unterbrechungs- behandlung Datum ins Datenregister übertragen Unterbrechung Datenregister lesen Datum verarbeiten Beliebige Nebenaktivitäten, schnelle Reaktionszeit Verringerte Übertragungsraten Rückkehr zur Unterbrochenen Task

4.6 Speicher- und IO-Verwaltung Synchronisation durch Polling mit Handshake Task Schnittstellenbaustein Gerät Gerät initialisieren: Steuerregister schreiben Gerät nimmt Tätigkeit auf Statusregister lesen Datum ins Datenregister übertragen Gerät bereit ? bereit nein ja Handshake Datenregister lesen Warte auf Bestätigung Bestätigung Datum verarbeiten Wenn Gerät Daten schneller liefert als die Task sie entgegennehmen kann

4.6 Speicher- und IO-Verwaltung Synchronisation durch Unterbrechung mit Handshake Task Schnittstellenbaustein Gerät Gerät initialisieren: Steuerregister schreiben Gerät nimmt Tätigkeit auf . . . Unterbrechungs- behandlung Datum ins Datenregister übertragen Unterbrechung Handshake Datenregister lesen Bestätigung Warte auf Bestätigung Datum verarbeiten Rückkehr zur unterbrochenen Task Wenn Gerät Daten schneller liefert als die Task sie entgegennehmen kann

4.6 Speicher- und IO-Verwaltung Unterbrechungsbehandlung in Echtzeitbetriebssystemen Task-Scheduler des Echtzeitbetriebs- system Task 1 Task 2 Task 3 Unterbrechungs- system des Prozessors Unterbrechungs- Behandlungs- programm Zeit Unterbrechung a) Unterbrechung der Taskverarbeitung Task 1 Task-Scheduler des Echtzeitbetriebs- system Task 2 Task 3 Task 4 (Unterbrechungs- behandlung) Unterbrechungs- system des Prozessors Unterbrechungs- Behandlungs- programm - - Zeit Unterbrechung b) Integration der Unterbrechung in die Taskverarbeitung

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Threads Tasks Semaphore Komm.über DPRAM, FIFO Nachrichten Scheduler Speicherverwaltung Physikal. Adr. Virtuelle Adr. Ein/Ausgabe Verw. Einfache E/A Treiber Komfortable E/A Treiber, Netzwerke Filesystem Minimales Echtzeitbetriebssystem (MEBS) x Controller System (CS) Dediziertes System (DS) Betriebssystemaufsatz (BA) Allgemeines Echtzeitbetriebssystem (EBS)

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Auswahlkriterien für Echtzeitbetriebssysteme Entwicklungs- und Zielumgebung Programmiersprache Zielsystem (ZE)- Crossentwicklungsumgebung (CE) Ladezeiten bei Crossentwicklung Debug-Möglichkeiten (CE): Quellcode-Debugging (C, C++, Java), Zeitverfälschung bei CE-Debugging EBS und EU vom selben Hersteller Modularität und Kerngröße Konfigurierbarkeit auf Anwendung Minimaler Mikrokern für eingebettete Systeme

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Anpassbarkeit an verschiedene Zielumgebungen Ist EBS an Mikrocontroller/Signalprozessor mit spezieller Peripherie anpassbar? ROM-Fähigkeit für Code mit RAM für Daten Feldbusse verfügbar Allgemeine Eigenschaften Bedieneroberfläche (Grafik, Kommandos, keine) Bibliotheken (Mathem., Graph., Textverarbeitung, …) Werkzeug für GUI-Echtzeitanwendungen Werkzeuge zur Versionsverwaltung, Datenhaltung oder zur Programmentwicklung

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Leistungsdaten maximale Taskanzahl (Tasks, Threads) Welche Scheduling-Strategien Anzahl unterschiedlicher Prioritätsebenen (64-256) Taskwechselzeiten (Threads schneller als Tasks) Latenzzeiten bei Unterbrechungen Behandlung von Unterbrechungen (direkt – indirekt) EBS-Klasse für harte, feste, weiche Echtzeitanwendungen

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Industrielle Echtzeit-betriebssysteme

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen 4.7.1 QNX Task 1 Task 2 . . . Task n Anwendertasks Dateisystem- Manager Netzwerk- Manager Geräte- Manager Prozess- Manager weitere Systemtasks Systemtasks QNX Inter- Taskkom- munikation Netzwerk- Schnittstelle Unterbre- chungs- behandlung Scheduler Mikrokern Unter- brechungen Prozessor, Speicher, Geräte Hardware Architektur von QNX

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen 4.7.2 Posix POSIX-Standards

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen POSIX.4: Echtzeit-erweiterungen

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen 4.7.3 RTLinux Linuxtask Linuxtask . . . 1 m Linux- Kern Echtzeit- Task 1 Echtzeit- Task n . . . Kommunikation Architektur von RTLinux Echtzeitkern Echtzeit-FIFO Unterbrechungen Hardware

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Aufteilung der eingebetteten Anwendung in Nicht-Echtzeit und Echtzeittasks Anwendung Nicht-Echtzeittasks Echtzeittasks (Module) Benutzerschnittstelle Grafik Datenhaltung, Datenaufbereitung, .... Aufgaben mit harten Echtzeitanforderungen

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen RT-Prozesse unter RTLinux Bei RT-Linux wird eine Task als Prozess bezeichnet Ein Prozess enthält einem Thread und kann weitere zur Laufzeit erzeugen Ein RT-Prozess wird über ein Kernel-Modul definiert: insmod "Prozessname" Der Linux-Befehl insmod lädt das Kernel-Modul "Prozessname" und startet die Funktion init_module zur Initialisierung. Innerhalb init_module können weitere Threads angelegt werden

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Funktionen zur Verwaltung von RT-Prozessen Erzeugen eines RT-Threads: int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); Erzeugt einen Thread thread mit den Attributen attr (z.B. Stack-Größe) und startet ihn durch Aufruf der Funktion start_routine(arg). start_routine(arg) ist die Funktion, welche die Thread-Aufgaben realisiert. Beenden eines RT-Threads: int pthread_delete_np(pthread_t thread); RT-Thread periodisch definieren: int pthread_make_periodic_np(pthread_t thread, hrtime_t start_time, hrtime_t period); Der Thread thread wird zum Zeitpunkt start_time gestartet und in durch period (in Nanosekunden) gegebenen Intervallen aufgerufen

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Suspendieren eines RT-Threads: int pthread_suspend_np(pthread_t thread); Thread wird angehalten. Entspricht Blockiert-Zustand. Aufwecken eines RT-Threads: int pthread_wakeup_np(pthread_t thread); Thread kann fortgesetzt werden. Entspricht Zustandsübergang Blockiert nach Bereit. Periodischen Thread bis zur nächsten Periode suspendieren: int pthread_wait_np(void); Thread gibt Kontrolle an Scheduler bis zum nächsten periodischen Aufruf ab.

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen Beispiel: RT-Modul pthread_t thread; /* Datenstruktur für Threads */ int init_module(void) /* wird beim Laden des RT-Moduls aufgerufen */ { /* Erzeugen eines Threads mit Funktion start_routine */ return pthread_create (&thread, NULL, start_routine, 0); } void cleanup_module(void) /* wird beim Entfernen des RT-Moduls aufgerufen */ pthread_delete_np (thread); /* Entfernen (Löschen) des Threads */

4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen void *start_routine(void *arg) /* Implementierung der Thread-Funktion */ { struct sched_param p; /* Datenstruktur für Thread-Eigenschaften */ p . sched_priority = 1; /* Thread-Priorität in Datenstruktur eintragen */ /* Funktion zum Setzen der Thread-Parameter aufrufen */ /* SCHED_RR: Round Robin Scheduling (auch möglich: SCHED_FIFO) */ pthread_setschedparam (pthread_self(), SCHED_RR, &p); /* Periodischer Aufruf des Threads: Periode ist 0,5 sec, starte sofort */ pthread_make_periodic_np (pthread_self(), gethrtime(), 500000000); while (1) { pthread_wait_np (); /* bis zur nächsten Periode warten */ rtl_printf("Hello, I'm here!\n"); /* Thread-Funktion: Text-Ausgabe */ } return 0;