Sdílet prostřednictvím


Podpora víceprocesoru v síťových ovladačích

Pokud chcete napsat přenosný ovladač pro všechny verze Systému Microsoft Windows, musíte napsat kód pro bezpečné spouštění na počítačích s více současně běžícími procesory. Síťový ovladač musí být víceprocesorově bezpečný a musí používat poskytnuté funkce knihovny NDIS.

V jednoprocesorovém prostředí spouští jeden procesor současně pouze jednu instrukci počítače, i když je možné, že síťová karta (NIC) nebo jiné zařízení přeruší aktuální spouštěcí proud, když dojde k doručení paketů nebo při přerušení časovače. Při manipulaci s datovými strukturami, jako jsou fronty paketů, ovladač obvykle zakáže přerušení na NIC, provádí úpravy a poté znovu povolí přerušení. Mnoho vláken v jednoprocesorovém prostředí zdánlivě běží současně, ale ve skutečnosti běží v prokládaných časových úsecích.

V multiprocesorovém prostředí procesory současně spouští několik instrukcí počítače. Ovladač se musí synchronizovat, aby když jedna funkce ovladače manipuluje se společnými datovými strukturami, stejná nebo jiná funkce ovladače na jiném procesoru se nepokouší upravovat sdílená data současně. Veškerý kód ovladače se znovu zařazuje do počítače s symetrickým multiprocesorem (SMP). Pokud chcete tento problém s ochranou prostředků odstranit, ovladače zařízení s Windows používají spinové zámky. Další informace naleznete v tématu Synchronizace a oznámení v síťových ovladačích.