Multicore und Synchronisation

Welche Aussage zu Spinlocks ist richtig?

  1. AEine Sperre, bei der der Thread schläft und vom Betriebssystem geweckt wird, bis die Sperre frei ist
  2. BEine Sperre, bei der in einer Schleife die Sperrvariable immer wieder geprüft wird, bis die Sperre frei ist
  3. CEin Mechanismus, der Daten schützt, indem die Festplatte rotiert
Antwort und Erläuterung anzeigen

Antwort: B. Eine Sperre, bei der in einer Schleife die Sperrvariable immer wieder geprüft wird, bis die Sperre frei ist

Ein Spinlock versucht, die Sperre mit einem atomaren Befehl zu erhalten, und wiederholt bei Misserfolg sofort den Versuch. Da der Aufwand entfällt, das Betriebssystem aufzurufen und zu schlafen bzw. aufzuwachen, arbeitet er schnell, wenn die Sperre nur sehr kurz gehalten wird. Er wird häufig im Betriebssystemkern und für den gegenseitigen Ausschluss mit Interrupt-Handlern verwendet. Nachteil ist, dass auch beim Warten weiter CPU-Zeit verbraucht wird.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. In welcher Situation eignet sich ein Spinlock am wenigsten?
  2. Warum wartet man bei Spinlocks (Test-and-Test-and-Set) normalerweise mit gewöhnlichem Lesen auf die Freigabe, statt die Sperrvariable sofort mit einem atomaren Befehl zu ändern, und verwendet den atomaren Befehl nur, wenn die Sperre frei erscheint?
  3. Welche Aussage im Vergleich von Mutex (schlafend wartende Sperre) und Spinlock ist richtig?
  4. Welches Beispiel für einen Deadlock ist richtig?
  5. Welche Methode zur Vermeidung von Deadlocks in Programmen mit mehreren Sperren ist am gebräuchlichsten?

Vergleiche zu diesem Thema