DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Inhalt • • • • • • Sperrsynchronisation (Mutex) Reihenfolgensynchronisation Semaphore Verklemmungen • Deadlocks • Livelocks Prioritäteninversion Prioritätenvererbung Weitere Beispiele für die Semaphore-Operationen REQ und REL: Seite 1 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich • Synchronisation ist notwendig, wenn Tasks abhängig voreinander sind, weil sie gemeinsame Betriebsmittel benutzen, wie z.B. Daten, Geräte oder Programme. • 2 grundlegende Varianten der Synchronisation: • Sperrsynchronisation (wechselseitiger Ausschluss, Mutual Exclude (Mutex)) stellt sicher, dass zu einem Zeitpunkt immer nur eine Task auf ein gemeinsames Betriebsmittel zugreift. • Reihenfolgensynchronisation regelt die Reihenfolge auf gemeinsame Betriebsmittel • Bereiche, in denen Tasks synchronisiert werden müssen, heißen kritische Bereiche. • Busy-Waiting ist das Hauptproblem der Software-Lösungen und der Hardwareunterstützten Lösungen zur Durchsetzung des wechselseitigen Ausschlusses. • Gesucht werden daher Synchronisationsmechanismen, die Busy-Waiting verhindern. Dies ist nur auf Betriebssystemebene möglich, da dort Prozesse blockiert und wieder auf bereit gesetzt werden können.. Seite 2 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Semaphore als Lösung Einführung einer Semaphore, die aus: – einer Zählvariablen (Warteschlange) und aus – zwei nicht unterbrechbaren (atomaren) Operationen P(S) und V(S) besteht. s := s-1; if (s < 0) then „Ordne Prozess an Position –s der Assoziierten Warteschlange ein“; Notationen: P(S) = passeeren = Verringern um den Wert 1: Request, wait, down, aquire, … V(S) = vrijgeven = Erhöhen um den Wert 1: Release, up, signal, … s := s+1; if (s <= 0) then „Wecke den ältesten Wartenden Prozess und sende ihn in den kritischen Bereich“; Seite 3 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Semaphore zur Synchronisation • Bei Standardbetriebssystemen: Bereitmachen einer beliebigen wartenden Task bei V • Bei Echtzeitbetriebssystemen: Bereitmachen der höchstprioren wartenden Task bei V Request Release Zähler := Zähler - 1 Zähler := Zähler + 1 Zähler<0 ? Zähler<1 ? ja Task blockieren ja eine blockierte Task bereit machen Seite 4 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Semaphore zur Synchronisation • Lösung des wechselseitigen Ausschlusses mit einem binären Semaphore • Begriff binärer Semaphor resultiert daraus, dass es nur zwei Zustände gibt. Da es nur darauf ankommt, ob kritischer Bereich frei ist oder nicht, sind andere Werte (negative oder größer 1) nicht nötig: – S = 1, wenn kritischer Bereich frei ist, – S = 0, wenn kritischer Bereich belegt ist. Initialisiere Semaphore S = 1 Task 1 Task 2 REQ S Zugriff auf geschützte Betriebsmittel REQ S Task 2 blockiert Task 2 freigegeben REL S Zugriff auf geschützte Betriebsmittel REL S Seite 5 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Semaphore zur Synchronisation • Reihenfolge-Synchronisation mit zwei binären Semaphoren • Anfangswert = 1 garantiert, dass dieser Prozess als Erster beginnt Task 1 Task 2 Initialisiere Semaphore S1=0 Initialisiere Semaphore S2=1 REQ S1 REQ S2 Task 1 blockiert Aktivität Task 2 REL S1 Task 1 freigegeben Aktivität Task 1 REQ S2 Task 2 blockiert REL S2 Task 2 freigegeben Aktivität Task 2 REQ S1 Task 1 blockiert Task 1 freigegeben REL S1 Seite 6 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Semaphore zur Synchronisation • • • • • • • Erzeuger-/Verbraucher Synchronisation mit zwei Zählsemaphoren (Zähler > 1): Svoll: erzeugte Objekte für Verbraucher und Sleer: Freie Plätze für Objekte des Erzeugers Svoll = 0 bedeutet Lager ist leer (Aus einem leeren Lager kann nichts entnommen werden) Sleer = 0 bedeutet Lager ist voll (In ein volles Lager kann nichts deponiert werden) Sleer+Svoll ist invariant. Zusätzlich ist beim Erzeugen und Verbrauchen noch ein MUTEX zu implementieren Task "Erzeuger" Task "Verbraucher" Initialisiere Semaphore Sleer = n Initialisiere Semaphore Svoll = 0 REQ Sleer REQ Svoll Erzeuge Objekt Verbrauche Objekt REL Svoll REL Sleer Seite 7 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Semaphore zur Synchronisation Reader-Writer-Problem: • Writer sind Prozesse, die schreiben dürfen, Reader Prozesse, die Anfragen stellen • 1 Schreiber, n Leser • Es dürfen mehrere Leser gleichzeitig auf den Daten lesen. • Wenn der Schreiber auf den Daten schreibt, darf kein Leser lesen. • Wenn ein Leser liest, darf der Schreiber nicht schreiben (in seinen kritischen Abschnitt eintreten). • Schreiber hat Priorität, d.h. wenn der Schreiber in seinen kritischen Abschnitt eintreten will, darf kein Leser vor ihm mehr in seinen kritischen Abschnitt eintreten. 1. Reader-Writer-Problem: Kein Reader muss auf eine Eintrittserlaubnis warten; es sei denn, ein Writer befindet sich im kritischen Bereich. Problem: Reader können das System monopolisieren, und Writer kommt nicht dazu, sein Update durchzuführen -> Verklemmung (starvation) bezüglich Writer. 2. Reader-Writer-Problem: Sobald ein Writer wartet, wird neuen Readern der Zugang verwehrt. Die Writer können das System monopolisieren. 3. Reader-Writer-Problem: Fairness durch alternierende Lese- und Schreibphasen: Ist gerade Lesephase und meldet sich ein Writer an, werden keine neuen Reader mehr zugelassen. Sobald alle Reader fertig sind, darf der Writer zugreifen. Ist gerade eine Schreibphase und meldet sich ein Reader an, wird das Ende dieser Schreibphase abgewartet und dann eine Lesephase gestartet. Seite 8 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Semaphore zur Synchronisation Lösung für das 1. Reader-Writer-Problem: • Semaphore s für die Schreib- und w für die Lesephase • Variable n zählt Anzahl der gleichzeitig aktiven Leser • Funktionen: – Semaphore s wird mit 1 initialisiert und wird sowohl von Reader- als auch von Writerprozessen verwendet, um Writern einen exklusiven Zugriff zu ermöglichen. – Semaphor w stellt sicher, dass ein Update von n ungestört erfolgen kann. wait() entspr. REQ signal() entspr. REL Readerprozess Writerprozess Seite 9 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Übung zum wechselseitigen Ausschluss: Zwei Task A und B (mit absteigender Priorität, A hat die höchste) benutzen exklusiv zwei gemeinsame Speicherbereiche, die jeweils durch eine Semaphore geschützt werden (gestr. Linie = Programmcode, nT = Ausführungsdauer). Tragen Sie den zeitlichen Verlauf mit den entsprechenden Taskzuständen (blockiert = wartet auf Sema, ablaufwillig = durch höhere Prio verdrängt) der zwei Tasks im Bereich 0<=t<=20T ein, wobei sie zwei Fälle unterscheiden: • Fall 1: Task A wird bei T=5t und B bei T=0t gestartet • Fall 2: Task A wird bei T=2t und B bei T=0t gestartet Die zwei Semaphore S1 und S2 sind mit 1 initialisiert. Task A (Prio 1) Task B (Prio 2) T T REQ S2 REQ S1 2T REQ S1 3T REL S1 2T 2T REQ S2 3T REL S2 2T REL S2 REL S1 T T END END Seite 10 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Übung: Formular zum Zeichnen der Soll-Abläufe laufend Task A blockiert ablaufwillig laufend Task B blockiert ablaufwillig 5 10 15 20 Seite 11 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Verklemmungen 2 Arten • Deadlocks (Blockierung, Deadly Embrace): mehrere auf die Freigabe von Betriebsmittel wartende Tasks blockieren sich gegenseitig – Deadlocks entstehen, wenn falsch programmiert wurde oder – wenn die Reihenfolge der REQ/REL-Anweisungen falsch gewählt wurde • Livelocks (Starvation, Aus-/Verhungern): 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 der Prioritäteninversion Seite 12 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Verklemmungen • Beispiel 1: Deadlock durch kreuzweise Betriebsmittelbelegung Task 1 Task 2 REQ S(DruckTab) REQ S(TempTab) REQ S(TempTab) REQ S(DruckTab) DruckTab schreiben TempTab lesen TempTab schreiben DruckTab lesen REL S(DruckTab) REL S(TempTab) REL S(TempTab) REL S(DruckTab) Tabellen drucken • • Ablauf: Task 1: REQ SD; Task 2: REQ ST; Task 2: REQ SD; Task 2: blockiert; Task 1: REQ ST; Task 1: blockiert. Gegenmaßnahme: Vergabe der Betriebsmittel in gleicher Reihenfolge Seite 13 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Verklemmungen • 2 Lösungen für die kreuzweise Betriebsmittelbelegung: • Task 11 mit Task 2 • Task 12 mit Task 2 Task 2 REQ S(TempTab) Task 11 REQ S(DruckTab) Task 12 REQ S(DruckTab) REQ S(TempTab) DruckTab schreiben REQ S(DruckTab) REL S(DruckTab) DruckTab schreiben REQ S(TempTab) TempTab schreiben TempTab schreiben REL S(DruckTab) REL S(TempTab) REL S(TempTab) TempTab lesen DruckTab lesen REL S(TempTab) REL S(DruckTab) Tabellen drucken Seite 14 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Initialisiere Semaphore S = 1 Verklemmungen • Beispiel 2: Deadlock durch Programmierfehler Task 1 • Gegenmaßnahme: höhere Synchronisationskonstrukte (z.B. Monitore) Task 2 REQ S Zugriff auf geschützte Betriebsmittel REQ S REQ S Zugriff auf geschützte Betriebsmittel REL S Seite 15 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Verklemmungen • Beispiel 3: Deadlock durch Programmierfehler (Erzeuger/Verbraucher-Problem) Erzeuger • Verbraucher While (true) { While (true) { Initialisierung: REQ SWait; REQ SProd; SWait = 1 REQ SFree; REQ SWait; SFree = 2 /*erzeuge Produkt*/ /*verbrauche Produkt*/ SProd = 0 REL SWait; REL SWait; REL SProd; } REL SFree; } Wie ist der Programmierfehler zu beheben? Seite 16 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Verklemmungen • Beispiel 3: Deadlock durch Programmierfehler (Erzeuger/Verbraucher-Problem) • Ablauf: SWait=0 SProd=1 SFree=1 Erzeuger: REQ SWait; Erzeuger: REQ SFree; SWait=0 SWait=0 SProd=0 SFree=2 SProd=1 Erzeuger: REL SWait; SWait=0 SWait=1 SFree=1 SProd=1 SFree=0 Erzeuger: REL SWait; Erzeuger: REL SProd; SWait=1 SWait=1 SProd=0 SFree=1 SProd=2 SFree=0 Erzeuger: REL SProd; Erzeuger: REQ SWait; SWait=1 SWait=0 SProd=1 SFree=1 Erzeuger: REQ SWait; SProd=2 SProd=2 SFree=-1 Erzeuger: ist blockiert SFree=0 Erzeuger: REQ SFree; SProd=0 SWait=0 Verbraucher: REQ SProd; SWait=0 SProd=1 SFree=-1 Verbraucher: REQ SWait; SWait=-1 SProd=1 Free=-1 Verbraucher: ist blockiert SFree=0 Erzeuger: REQ SFree; Seite 17 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Verklemmungen • Beispiel 4: Deadlock durch ungünstigen Speicherzugriff • Annahme: Speicherverfügbarkeit = 200 kB Task 1 • • Task 2 … … 80 kB 70 kB … … 60 kB 90 kB … … Verklemmung, wenn sich beide Tasks zwischen der ersten und zweiten Speicheranforderung befinden, da nur noch 50 kB verfügbar sind. Gegenmaßnahme: Virtueller Speicher Seite 18 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Verklemmungen (Prioritäteninversion) Task 1 hohe Priorität Task 1 versucht, Mutex zu belegen, wird blockiert Task 1 Task 2 niedere Priorität Mutex Task 2 gibt Mutex frei Task 2 belegt Mutex Prioritäteninversion Task 2 Ruhe Zeit Ereignis für Task 2 Ereignis für Task 1 Seite 19 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Verklemmungen (Prioritäteninversion) Livelock Task 1 versucht, Mutex zu belegen, wird blockiert Task 1 hohe Priorität Mutex Task 2 mittlere Priorität Task 1 Task 2 Task 3 niedere Priorität Task 3 belegt Mutex Livelock, Task 1 ist längerfristig blockiert Task 3 Ruhe Zeit Ereignis für Task 3 Ereignis für Task 1 Ereignis für Task 2 Seite 20 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Vermeidung von Deadlocks 2 Klassen von Methoden zur Deadlockverhinderung (Deadlock Prevention) • Indirekte Methoden (Erfüllung von 3 Bedingungen für den Eintritt eines Deadlocks): • 1. Bedingung: Mutual Exclusion, d.h. mind. 2 Prozesse und 2 Betriebsmittel • 2. Bedingung: Hold and Wait, d.h. ein Prozess muß ein Betriebsmittel behalten, während er auf ein weiteres Betriebsmittel wartet • 3. Bedingung: No Preemption, d.h. ein Betriebsmittel kann einem Prozess, der sie behält, nicht wieder entzogen werden. • Direkte Methoden (Betrachtung der genauen Deadlock-Situation): • Circular Wait, d.h. es existiert eine geschlossene Kette von Prozessen, so dass jeder Prozess mindestens ein Betriebsmittel behält, das von einem anderen Prozess der Kette gebraucht wird. fordert an Betriebsmittel A belegt von Prozess 1 Prozess 2 belegt von fordert an Betriebsmittel B Seite 21 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Vermeidung von Verklemmungen durch Prioritätenvererbung • Vermeidung des Livelocks Task 1 versucht, Mutex zu belegen, wird blockiert Task 3 gibt Mutex frei Task 1 ist fertig Task 1 Task 2 Task 3 belegt Mutex Prioritätenvererbung, Task 3 erhält die Priorität von Task 1 (daher keine Unterbrechung durch Task 2) Task 3 Ruhe Zeit Ereignis für Task 3 Ereignis für Task 1 Ereignis für Task 2 Seite 22 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Vermeidung von Verklemmungen durch Prioritätenvererbung • Vermeidung durch das priority ceiling protocol (Prioritätsobergrenze) Deadlocks entstehen auch dadurch, dass sich Tasks gegenseitig blockieren, wenn sie auf mehrere kritische Bereiche zugreifen müssen (s. Übung Seite 10); jeder kritische Bereich wird dabei durch eine Semaphore geschützt. Task 1 hohe Priorität Mutex 1 Task 2 niedere Priorität Mutex 2 Regel: Möchte ein Prozess eine Ressource nutzen, so wird zuerst geprüft, ob diese verfügbar ist: ist die Ressource bereits vergeben, so wird die Anforderung verweigert und der Prozess blockiert an dieser Ressource, ist die Ressource verfügbar, so wird die aktuelle Prioritätsschranke des Systems geprüft: hat der Prozess eine höhere Priorität als die aktuelle Prioritätsschranke, so bekommt er die Ressource zugeteilt, hat er keine höhere Priorität, so bekommt er die Ressource nur dann, wenn er schon die Ressource, die die aktuelle Prioritätsschranke des Systems begründet, besitzt. Ansonsten wird ihm die Ressource verweigert. Blockiert ein Prozess an einer Ressource, so erbt der Prozess, der diese Ressource momentan besitzt, die (höhere) Priorität des anfragenden Prozesses. Der Prozess, der die Ressource schon besitzt, wird nun unter dieser Priorität weiterverarbeitet, bis er alle Ressourcen freigegeben hat, deren Prioritätsschranke größer oder gleich der geerbten Priorität ist. Seite 23 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Übung (s. vorne): gegenseitiges Blockieren beim Zugriff auf kritische Bereiche Soll-Ablauf ohne priority ceiling protocol (pcp) REQ S2 REQ S1 laufend Task A blockiert ablaufwillig laufend Task B blockiert ablaufwillig 5 10 REQ S1 REQ S2 15 20 Seite 24 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 Lösungen der Übungsaufgaben (Kap 7) Übung: Kein gegenseitiges Blockieren beim Zugriff auf kritische Bereiche Soll-Ablauf mit priority ceiling protocol (pcp) Hier blockiert Task A und Task B bekommt die Prio 1 REL S1 REL S2 REQ S1 REQ S2 laufend Task A Hier hat Task B alle Ressourcen freigegeben und gibt damit die Prio zurück. blockiert ablaufwillig laufend Task B blockiert ablaufwillig 5 REQ S1 REQ S2 10 REL S2 REL S1 15 20 Seite 25 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Betriebssystem-unterstützte Lösungen) Semaphore sind eine „low-level“-Lösung, die erhebliche Disziplin vom Programmierer verlangt. Eine komfortablere Lösung bieten Monitore. • Ein Monitor ist eine Sammlung von Prozeduren, Variablen und Datenstrukturen (mit einer assoziierten Warteschlange). • Prozesse können die Prozeduren des Monitors aufrufen, aber keine internen Daten ändern. • Monitore besitzen die Eigenschaft, dass immer nur genau ein Prozess einen Monitor benutzen kann. • Monitore sind Konstrukte einer Programmiersprache und erfordern daher spezielle Compiler, die Maschinenbefehle generieren, die z.B. den wechselseitigen Ausschluss im Monitor garantieren (nicht mehr der Programmierer). Seite 26 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • Die Abarbeitung von Monitorprozeduren wird von Zustandsvariablen (condition variables) abhängig gemacht, auf die zwei Operationen wirken – wait(cond) veranlasst einen Prozess, sich schlafen zu legen, d.h. sich an das Ende der assoziierten Warteschlange einzureihen. (ähnlich REQ) – signal(cond) weckt den ältesten Prozess in der Warteschlange. (ähnlich REL) • Unterschied zu Semaphor: signal hat keine Wirkung, wenn zum Zeitpunkt des Absendens kein Prozess wartet, d.h. sie gehen verloren. • Mit anderen Worten: signal(cond) signalisiert das Eintreffen der Bedingung cond und wait(cond) realisiert das Warten von Prozessen aufgrund des Nichterfülltseins von cond. • Da sich immer nur ein Prozess im Monitor befindet, werden die wait und signal-Operationen atomar ausgeführt. Seite 27 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • Beispiel: Seite 28 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • Problem: Was passiert, wenn Prozess A während Monitorbenutzung ein Signal setzt, auf das ein anderer Prozess B wartet, d.h. nach der signal-Operation können sich zwei Prozesse im Monitor befinden? • 3 Lösungen sind möglich: – 1. Lösung (Brinch Hansen): Die signal-Operation ist immer die letzte Operation eines Prozesses im Monitor, d.h. die Operation wird abgeschlossen, bevor ein anderer Prozess erweckt wird. – 2. Lösung (Hoare): Der Signalgeber-Prozess wird gesperrt, bis der erweckte Prozess den Monitor verlassen hat. – 3. Lösung: Der Prozess wird erst erweckt, nachdem der Signalgeber-Prozess den Monitor verlassen hat. • Kein Königsweg: Die verwendete Semantik muss explizit festgelegt werden; Beste Lösung: signal-Operation immer ans Ende einer Monitorprozedur setzen. Seite 29 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • Erzeuger/Verbraucher-Problem: Seite 30 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • 3. Reader-Writer-Problem: ankommender Reader erhält Priorität vor später ankommenden Writern und umgekehrt. Seite 31 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • 3. Reader-Writer-Problem Seite 32 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • 3. Reader-Writer-Problem Seite 33 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • Ablaufbeispiel für das 3. Reader-Writer-Problem Seite 34 DHBW Stuttgart, Studiengang Elektrotechnik, 5. HJ, Vorlesung: Realzeitsysteme Nov 2016 7) Task-Synchronisation Kritischer Bereich (Monitore) • Ablaufbeispiel für das 3. Reader-Writer-Problem Seite 35
© Copyright 2024 ExpyDoc