网络驱动程序中的多处理器支持

若要为所有 Microsoft Windows 版本编写可移植驱动程序,需要编写代码,以便在具有多个并发运行的处理器的计算机上安全运行。 网络驱动程序必须是多处理器安全的,并且必须使用提供的 NDIS 库函数。

在单处理器环境中,单个处理器一次只运行一个计算机指令,即使网络接口卡(NIC)或其他设备有可能在数据包到达或计时器中断时中断当前执行流。 通常,在操作数据结构(例如数据包队列)时,驱动程序会禁用网络接口卡上的中断,执行操作,然后重新启用中断。 单处理器环境中的许多线程似乎同时运行,但实际上在交错的时间切片中运行。

在多处理器环境中,处理器同时运行多个计算机指令。 驱动程序必须进行同步,以确保当一个驱动程序函数操作通用数据结构时,另一个处理器上的同一或其他驱动程序函数不会同时尝试修改共享数据。 所有驱动程序代码在对称多处理器(SMP)计算机中是可重入的。 若要消除此资源保护问题,Windows 设备驱动程序使用旋转锁。 有关详细信息,请参阅 网络驱动程序中的同步和通知。