Menu Close

Betriebssysteme (Vorlesung 8)

Skript-AnfangBS_4_SS2013_2 – Seite 59
Skript-EndeBS_4_SS2013_2 – Seite 80

Signalhandler

  • Zwei gleiche Signale kommen an:
    • Das erste Signal wird sofort behandelt
    • Das zweite ankommende Signal wird in eine Queue hinten an gestellt, bis das erste Signal fertig behandelt ist
  • Unterschiedliche Signale können Programm und Handler jedoch unterbrechen

Mutex

  • Der Begriff Wechselseitiger Ausschluss bzw. Mutex (Abk. für engl. mutual exclusion) bezeichnet eine Gruppe von Verfahren, mit denen das Problem des kritischen Abschnitts gelöst wird.
  • Das Mutex-Verfahren verhindern, dass nebenläufige Prozesse bzw. Threads gleichzeitig oder zeitlich verschränkt gemeinsam genutzte Datenstrukturen unkoordiniert verändern.
  • Dadurch wird verhindert, dass die Datenstrukturen in einen inkonsistenten Zustand geraten können.

Semaphor

  • Ein Semaphor ist eine Datenstruktur, die aus einer Ganzzahl und den Nutzungsoperationen „Reservieren/Probieren“ und „Freigeben“ besteht.
  • Sie eignet sich insbesondere zur Verwaltung beschränkter (zählbarer) Ressourcen, auf die mehrere Prozesse oder Threads zugreifen sollen, wie etwa Erzeuger und Verbraucher.
  • Im Gegensatz zur Sperrvariablen (dem Lock) brauchen die Aktivitätsträger, die „reservieren“ und „freigeben“, nicht identisch zu sein.

Deadlocks

  • Prozesse sind in einer nicht endenden Schleife gefangen und warten unendlich lang
  • Der Vogel Strauß-Algorithmus (Kopf in den Sand stecken) ist in jedem Betriebssystem implementiert
  • Welche Probleme gibt es in der Praxis? → Das Betriebssystem weiß beim Deadlock nicht welcher Prozess abgeschossen werden soll

Spinlock

Vorteile

  • Das Verfahren vermeidet Kontextwechsel, die sehr zeitaufwändig sind (und kostet dafür Prozessorkapazität)
  • Kann trotz verschenkter Prozessorkapazitäten schneller ablaufen als alternative Sperrmöglichkeiten wie bspw. Mutex
  • Erhöht die effektive Parallelität gegenüber threadwechselnden Sperrmöglichkeiten erheblich
  • Ist bei stark nebenläufigen Algorithmen oftmals die bevorzugte Vorgehensweise

Nachteile

  • Das aktive Warten verschenkt Prozessorkapazitäten
  • Spinlock kann die Programmausführung stark verlangsamen, wenn mehr Threads als Prozessorkerne vorhanden sind
  • In Abhängigkeit vom Schedulingverfahren, kann der Einsatz von Spinlocks auch zu Deadlocks führen
  • Aktiver Thread wird nicht suspendiert wird, sondern wartet aktiv auf die Sperrvariable und behindert dadurch ablaufbereite Threads

Beispiel

  1. In einem Einprozessorsystem mit zwei Threads, wird ein Spinlock von einem Thread L mit geringer Priorität erfolgreich gesperrt.
  2. Kurz darauf (und vor der Freigabe des Spinlocks durch Thread L) wird ein Thread H mit hoher Priorität durch ein Ereignis lauffähig und vom Scheduler aktiviert.
  3. Thread H versucht nun ebenfalls den Spinlock zu sperren und gerät dadurch in das aktive Warten.
  4. Bei einem Schedulingverfahren ohne Time Slicing entsteht dadurch ein Deadlock, da Thread L nicht wieder lauffähig wird und den Spinlock nicht mehr freigeben kann.
  5. Die Verwendung eines Mutex hätte in diesem Beispiel den Deadlock verhindert.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.

Index