Partilhar via


Suporte a multiprocessador 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 seguro para multiprocessador e deve usar as funções de biblioteca NDIS fornecidas.

Em um ambiente de uniprocessador, um único processador executa apenas uma instrução de computador de cada vez, mesmo que seja possível para uma placa de interface de rede (NIC) ou outro dispositivo interromper o fluxo de execução atual quando os pacotes chegam ou quando ocorrem interrupções do temporizador. Normalmente, ao manipular estruturas de dados, como filas de pacotes, um driver desabilita interrupções na NIC, executa a manipulação e, em seguida, reativa as interrupções. Muitos threads em um ambiente de 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 do 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 o código do driver é reentrante em um computador multiprocessador simétrico (SMP). Para eliminar esse problema de proteção de recursos, os drivers de dispositivo do Windows usam bloqueios de rotação. Para obter mais informações, consulte Sincronização e Notificação em Drivers de Rede.