Multiprozessorunterstützung in Netzwerktreibern
Um einen portablen Treiber für alle Microsoft Windows-Versionen zu schreiben, müssen Sie Code für die sichere Ausführung auf Computern mit mehreren gleichzeitig ausgeführten Prozessoren schreiben. Ein Netzwerktreiber muss multiprozessorsicher sein und die bereitgestellten NDIS-Bibliotheksfunktionen verwenden.
In einer Uniprozessorumgebung führt ein einzelner Prozessor jeweils nur eine Computeranweisung aus, obwohl es möglich ist, dass eine Netzwerkschnittstelle Karte (NIC) oder ein anderes Gerät den aktuellen Ausführungsdatenstrom beim Eintreffen von Paketen oder beim Auftreten von Timerunterbrechungen unterbrechen kann. In der Regel deaktiviert ein Treiber beim Bearbeiten von Datenstrukturen wie Paketwarteschlangen Interrupts auf der NIC, führt die Bearbeitung durch und aktiviert interrupts dann erneut. Viele Threads in einer Uniprozessorumgebung scheinen gleichzeitig auszuführen, werden aber tatsächlich in überlappenden Zeitslices ausgeführt.
In einer Multiprozessorumgebung führen Prozessoren gleichzeitig mehrere Computeranweisungen aus. Ein Treiber muss synchronisiert werden, damit die gleiche oder eine andere Treiberfunktion auf einem anderen Prozessor nicht gleichzeitig versucht, freigegebene Daten zu ändern, wenn eine Treiberfunktion allgemeine Datenstrukturen bearbeitet. Der gesamte Treibercode wird auf einem SMP-Computer (Symmetric Multiprocessor) erneut ausgeführt. Um dieses Ressourcenschutzproblem zu beseitigen, verwenden Windows-Gerätetreiber Spin-Sperren. Weitere Informationen finden Sie unter Synchronisierung und Benachrichtigung in Netzwerktreibern.