2016-05-15 21 views

Antwort

1

In alten Zeiten von Single-Prozessor-Systemen war das Blockieren von Interrupts die Methode, Kernel-Datenstrukturen zu sperren. Wenn Interrupt X mitten in der Änderung von etwas wäre, würde es nicht wünschen, Interrupt Y mit höherer Priorität auszuführen und die Datenstrukturen in einem mehrdeutigen Zustand zu belassen. Natürlich sollte X nur Interrupts für die minimal benötigte Zeit blockieren.

In Mehrprozessorsystemen müssen Sie Software-Sperren hinzufügen, um zu verhindern, dass ein anderer Prozess während der Änderung mit Systemdatenstrukturen gestört wird (sowohl für Interrupts als auch für Systemaufrufe).

Sie müssen jedoch immer noch Interrupts blockieren. Wenn Interrupt X Datenstrukturen gesperrt (oder teilweise gesperrt) hätte und Interrupt Y ausgeführt werden könnte, könnte es versuchen, die gleichen Daten strukturiert zu sperren und würde ewig warten.