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

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

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

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