Compartilhar via


Suporte a vários processadores em drivers de rede

Para escrever um driver portátil para todas as versões do Microsoft Windows, você precisa escrever código para ser executado com segurança em computadores com vários processadores em execução simultânea. Um driver de rede deve ser compatível com multiprocessadores e deve usar as funções de biblioteca NDIS fornecidas.

Em um ambiente uniprocessador, um único processador executa apenas uma instrução de computador por vez, mesmo que seja possível que uma NIC (placa de interface de rede) ou outro dispositivo interrompa o fluxo de execução atual quando os pacotes chegam ou à medida que ocorrem interrupções de temporizador. Normalmente, ao manipular estruturas de dados, como filas de pacotes, um driver desabilita as interrupções na NIC, executa a manipulação e, em seguida, reabilita as interrupções. Muitos threads em um ambiente uniprocessador parecem ser executados simultaneamente, mas, na verdade, são executados em fatias de tempo intercaladas.

Em um ambiente multiprocessador, os processadores executam simultaneamente várias instruções de computador. Um driver deve sincronizar para que, quando uma função de driver manipula estruturas de dados comuns, a mesma ou outra função de driver em outro processador não tente modificar dados compartilhados ao mesmo tempo. Todo código driver é reentrante em um computador SMP (multiprocessador simétrico). Para eliminar esse problema de proteção de recursos, os drivers de dispositivo Windows usam bloqueios de rotação. Para obter mais informações, consulte Sincronização e Notificação em Drivers de Rede.