• Navigation überspringen
  • Zur Navigation
  • Zum Seitenende
Organisationsmenü öffnen Organisationsmenü schließen
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
  • FAUZur zentralen FAU Website
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Suche öffnen
  • English
  • Campo
  • StudOn
  • FAUdir
  • Stellenangebote
  • Lageplan
  • Hilfe im Notfall
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
Menu Menu schließen
  • Lehrstuhl
    • Team
    • Aktuelles
    • Kontakt und Anfahrt
    • Leitbild
    • 50-jähriges Jubiläum
    Portal Lehrstuhl
  • Forschung
    • Forschungsbereiche
      • Betriebssysteme
      • Confidential Computing
      • Eingebettete Systemsoftware
      • Verteilte Systeme
    • Projekte
      • AIMBOS
      • BALu
      • BFT2Chain
      • DOSS
      • Mirador
      • NEON
      • PAVE
      • ResPECT
      • Watwa
    • Projektkampagnen
      • maRE
    • Seminar
      • Systemsoftware
    Portal Forschung
  • Publikationen
  • Lehre
    • Sommersemester 2025
      • Applied Software Architecture
      • Ausgewählte Kapitel der Systemsoftware
      • Betriebssystemtechnik
      • Projekt angewandte Systemsoftwaretechnik
      • System-Level Programming
      • Systemnahe Programmierung in C
      • Systemprogrammierung 1
      • Verteilte Systeme
    • Wintersemester 2024/25
      • Betriebssysteme
      • Middleware – Cloud Computing
      • Systemprogrammierung 2
      • Verlässliche Echtzeitsysteme
      • Virtuelle Maschinen
      • Web-basierte Systeme
    Portal Lehre
  • Examensarbeiten
  1. Startseite
  2. Extern

Extern

Bereichsnavigation: Lehre
  • Betriebssysteme
    • Vorlesung
      • Folien
    • Übung
      • Seminar
      • Aufgaben
      • Aufgabe 0: C++ Streams
        • Aufgabe 1: Ein-/Ausgabe
          • Aufgabe 2: Unterbrechungen
            • Aufgabe 3: Pro-/Epilog
              • Aufgabe 4: Kontextwechsel
                • Aufgabe 5: Zeitscheiben
                  • Aufgabe 6: Synchronisation
                    • Aufgabe 7: Anwendung
                      • Assembler Crashkurs
                        • C++ Crashkurs
                          • Entwicklungsumgebung
                            • FAQ
                              • Ruhmeshalle
                              • Evaluation

                              Aufgabe 2: Unterbrechungen

                              Public Member Functions | List of all members
                              Spinlock Class Reference

                              By the use of Spinlocks, it is possible to serialize blocks of code that might run parallel on multiple CPU cores. More...

                              #include <sync/spinlock.h>

                              Public Member Functions

                               Spinlock ()
                               Constructor; Initializes as unlocked. More...
                               
                              void lock ()
                               Enters the critical area. In case the area is already locked, lock() will actively wait for the area can be entered. More...
                               
                              void unlock ()
                               Unblocks the critical area. More...
                               

                              Detailed Description

                              By the use of Spinlocks, it is possible to serialize blocks of code that might run parallel on multiple CPU cores.

                              Synchronization is implemented using a lock variable. Once a thread enters the critical area, it sets the lock variable (to a non-zero value); when this thread leaves the critical area, it resets the lock variable to zero. When trying to enter an already locked critical area, the trying thread actively waits until the critical area is free again.

                              Use the following two GCC intrinsics

                              • bool __atomic_test_and_set(void *ptr, int memorder)
                              • void __atomic_clear (bool *ptr, int memorder)

                              These intrinsics are translated into atomic, architecture-specific CPU instructions.

                              Note
                              If you want that things just work, choose __ATOMIC_SEQ_CST as memorder. This is not the most efficient memory order but works reasonably well.

                              Atomic Builtins in GCC manual

                              Constructor & Destructor Documentation

                              Spinlock::Spinlock ( )
                              inline

                              Constructor; Initializes as unlocked.

                              Todo:
                              Complete Constructor (for OOStuBS, or use Ticketlock)

                              Member Function Documentation

                              void Spinlock::lock ( )
                              inline

                              Enters the critical area. In case the area is already locked, lock() will actively wait for the area can be entered.

                              See also
                              Core::pause()
                              Todo:
                              Implement Method (for OOStuBS, or use Ticketlock)
                              void Spinlock::unlock ( )
                              inline

                              Unblocks the critical area.

                              Todo:
                              Implement Method (for OOStuBS, or use Ticketlock)

                              The documentation for this class was generated from the following file:
                              • sync/spinlock.h
                              Friedrich-Alexander-Universität
                              Erlangen-Nürnberg

                              Schlossplatz 4
                              91054 Erlangen
                              • Impressum
                              • Datenschutz
                              • Barrierefreiheit
                              • Facebook
                              • RSS Feed
                              • Xing
                              Nach oben