Genereller Ausschluss von Nebenläufigkeit

Unterbrechungen ausschalten

  • (In Unix: spl() Set Processor Level)
  • Aber:
    • Interrupts sind zeitkritisch
    • Funktioniert nur bei Einprozessorsystem
    • Im User-Mode nicht zulässig

Bei Mehrprozessorsystem auch andere Prozessoren blockieren

  • keine nebenläufigen (parallelen/quasi-parallelen) Aktivitäten
  • Aber:
    • nicht unbedingt realisierbar

Außerdem

in beiden Fällen: zuviel gesperrt
(viele Aktivitäten wollen kritischen Abschnitt gar nicht betreten)
Unnötige Verzögerung von zeitkritischen Vorgängen
Verschwendung von CPU-Kapazität (im zweiten Fall)

Selektiver Ausschluss von Nebenläufigkeit

siehe Nicht funktionierende Locking Algorithmen

Lock/Unlock und unteilbare Operationen

Spezial Operationen

Test_and_set

Load_locked / Store_conditional