Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultät Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
    - Videos
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Module
    - Mailingliste
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * Aufgabe 1
          Dokumentation
       * Aufgabe 2
          Dokumentation
       * Aufgabe 3
          Dokumentation
       * Aufgabe 4
          Dokumentation
       * Aufgabe 5
          Dokumentation
       * Aufgabe 6
          Dokumentation
       * Aufgabe 7
          Dokumentation
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2011/12  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 7

Spinlock Klassenreferenz

Mit Hilfe eines Spinlocks kann man Codeabschnitte serialisieren die echt nebenläufig auf mehreren CPUs laufen. Mehr ...

#include <spinlock.h>

Aufstellung aller Elemente

Öffentliche Methoden

 Spinlock ()
 Konstruktor; Initialisierung des Spinlocks als ungesperrt.
void lock ()
 Betritt den gesperrten Abschnitt. Ist dieser besetzt, so wird solange aktiv gewartet, bis er betreten werden kann.
void unlock ()
 Gibt den gesperrten Abschnitt wieder frei.


Ausführliche Beschreibung

Mit Hilfe eines Spinlocks kann man Codeabschnitte serialisieren die echt nebenläufig auf mehreren CPUs laufen.

Die Synchronisation läuft dabei über eine Sperrvariable. Sobald jemand den kritischen Abschnitt betreten will, setzt er die Sperrvariable. Verlässt er den kritischen Abschnitt, so setzt er sie wieder zurück. Ist die Sperrvariable jedoch schon gesetzt, dann wartet er aktiv darauf, dass sie der Besitzer des kritischen Abschnittes beim Verlassen wieder zurücksetzt.

Zur Implementierung können die beiden GCC-Intrinsics __sync_lock_test_and_set(unsigned int* lock_status, unsigned int value) und __sync_lock_release(unsigned int* lock_status) verwendet werden. Diese werden vom Compiler in die architekturspezifischen atomaren Operationen übersetzt.

Eintrag im GCC Manual über Atomic Builtins


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:
  Impressum   Datenschutz Stand: 2012-02-01 10:07   BO, DL