Für eine korrekte Darstellung dieser Seite benötigen Sie einen XHTML-standardkonformen Browser, der die Darstellung von CSS-Dateien zulässt.

..
Suche

Personensuche
Veranstaltungssuche
Katalog der UB Siegen

Abwechselnde Ausgabe (Falsche Lösung!)

Hinweise zur Benutzung der Demo
Zwei Prozesse sollten so synchronisiert werden, daß ihre Ausgaben immer streng abwechselnd erfolgen, also "121212...". Die hier gezeigte (falsche!) Lösung stammt aus einer früheren Klausur. Versuchen Sie einen Ablauf zu erzeugen, bei dem eine unzulässige Ausgabe entsteht. Zusatzfrage: welche möglichen Ausgaben erzeugt dieses Programm?
  • Hinweis: Falls Sie oben kein Java-Applet sehen, unterstützt Ihr Browser keine Java-Applets mehr. Sie können in diesem Fall das Applet mit Hilfe des Java-Tools 'appletviewer' starten: appletviewer <URL dieser Seite>
  • Im linken Teil sind dargestellt:
    • Die verwendeten Semaphore mit dem aktuellen Wert des Semaphor-Zählers. Die Farben bedeuten:
      • grün: Semaphor ist frei (Zähler > 0)
      • gelb: Semaphor ist belegt, kein wartender Thread (Zähler = 0)
      • rot: Semaphor ist belegt, Threads warten (Zähler < 0)
    • Die Ausgabe der beiden Prozesse, bzw. bei längerer Ausgabe nur die letzten Zeichen.
    • Ein Feld zum globalen Einzelschrittbetrieb. Bei jedem Drücken des 'Einzelschritt'-Knopfes führt ein rechenbereiter Thread die nächste Codezeile aus.
      Über die Combo-Box 'Strategie' kann die Auswahlstrategie festgelegt werden:
      • Random: zufällig
      • RR, Round Robin: die Threads werden reihum ausgewählt; ein Thread, der einen Schritt ausgeführt hat und rechenbereit ist, stellt sich hinten wieder an.
      • FIFO: ein Thread wird solange ausgeführt, bis er blockiert. Erst dann kommt der nächste Thread.
      • Prio: die Threads erhalten eine Priorität, die von links oben nach rechts unten abnimmt. Es wird immer der rechenbereite Thread mit der höchsten Priorität ausgeführt.
      • rev. Prio: die Threads erhalten eine Priorität, die von links oben nach rechts unten zunimmt. Es wird immer der rechenbereite Thread mit der höchsten Priorität ausgeführt.
  • Im rechten Teil sind die beteiligten Threads (bzw. Prozesse) mit ihrem Quellcode dargestellt.
    • Die blaugrüne Markierung zeigt die nächste auszuführende Codezeile an.
    • Eine rote Markierung bedeutet, daß der Thread in dieser Zeile blockiert ist.
    Wenn der 'Einzelschritt'-Knopf gedrückt wird, führt der Thread die nächste Codezeile aus.
  • Zum Zurücksetzen der Demo drücken Sie den 'Reload'-Knopf Ihres Browsers.