Warum Spinlocks in Interrupt-Handlern verwendet werden

8

Ich würde gerne wissen, warum Spin-Sperren anstelle von Semaphoren in einem Interrupt-Handler verwendet werden.

    
mousey 12.08.2010, 04:06
quelle

2 Antworten

12

Semaphore bewirken, dass Tasks bei Konflikten inaktiviert werden, was für Interrupt-Handler inakzeptabel ist. Grundsätzlich ist für eine so kurze und schnelle Aufgabe (Interrupt-Handling) die Arbeit des Semaphors übertrieben. Spinlocks können auch nicht von mehr als einer Task gehalten werden.

    
Michael Foukarakis 12.08.2010, 04:14
quelle
2

Das Problem ist, dass Interrupt-Handler (IH) asynchron und in unvorhersehbarer Weise ausgelöst werden, außerhalb des Bereichs anderer Aktivitäten, die im System ausgeführt werden. In der Tat, IHs laufen aus dem Rahmen des Konzepts der Threads und der Planung überhaupt. Aufgrund dessen sind alle wechselseitigen Ausschließungsgrundelemente, die auf den Scheduler angewiesen sind, inakzeptabel. Weil ihre Verwendung in der IH die Unterbrechungsbehandlungslatenzen dramatisch erhöhen kann (im Falle von IH, das im Kontext von Threads mit niedriger Priorität läuft) und in der Lage ist, Deadlocks zu erzeugen (im Falle von IH im Kontext von Thread, der die Sperre hält).

Sie können sich eine schöne und detaillierte Beschreibung von Spinlocks in Ссылка ansehen.

    
ZarathustrA 15.09.2013 18:13
quelle