Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

4.3 Aufbau von Echtzeitbetriebssystemen

Ähnliche Präsentationen


Präsentation zum Thema: "4.3 Aufbau von Echtzeitbetriebssystemen"—  Präsentation transkript:

1 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

2 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

3 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 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

5 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

6 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.

7 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.

8 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

9 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

10 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

11 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

12 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

13 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)

14 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

15 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

16 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 msec Ereignis Ereignis Ereignis für Task 1 für Task 2 für Task 2

17 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

18 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

19 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 msec

20 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 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.

21 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.

22 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

23 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])

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

25 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

26 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

27 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 msec Ereignis für T1, T2 und T3 Ereignis für T1und T2

28 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 msec Ereignis für T1, T2 und T3 Ereignis für T1 und T2

29 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%

30 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

31 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 msec Ereignis für T1, T2 und T3 Ereignis für T1 und T2 Ereignis für T1 und T2

32 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

33 4.4 Echtzeitscheduling Ablauf des FTS Beispiels mit LLF-Scheduling

34 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

35 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 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

36 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.

37 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

38 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 msec Zeitschranke T3 Transponder- erkennung (T3) Zeitschranke T1&T2 fertig T3 fertig T1 und T2

39 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“

40 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

41 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

42 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

43 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)

44 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

45 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)

46 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

47 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)

48 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

49 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

50 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

51 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

52 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

53 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

54 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)

55 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

56 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  

57 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

58 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.

59 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.

60 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

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

62 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

63 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

64 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 . . .

65 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

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

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

68 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

69 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

70 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

71 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

72 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

73 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

74 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

75 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

76 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

77 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

78 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)

79 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

80 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

81 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

82 4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen
Industrielle Echtzeit-betriebssysteme

83 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

84 4.7 Klassifizierung und Beispiele von Echtzeitbetriebssystemen
4.7.2 Posix POSIX-Standards

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

86 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

87 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

88 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

89 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

90 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.

91 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 */

92 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(), ); while (1) { pthread_wait_np (); /* bis zur nächsten Periode warten */ rtl_printf("Hello, I'm here!\n"); /* Thread-Funktion: Text-Ausgabe */ } return 0;


Herunterladen ppt "4.3 Aufbau von Echtzeitbetriebssystemen"

Ähnliche Präsentationen


Google-Anzeigen