다음을 통해 공유


네트워크 드라이버의 다중 프로세서 지원

모든 Microsoft Windows 버전용 휴대용 드라이버를 작성하려면 동시에 실행되는 프로세서가 여러 대 있는 컴퓨터에서 안전하게 실행되도록 코드를 작성해야 합니다. 네트워크 드라이버는 다중 프로세서로부터 안전해야 하며 제공된 NDIS 라이브러리 함수를 사용해야 합니다.

유니프로세서 환경에서는 NIC(네트워크 인터페이스 카드) 또는 다른 디바이스가 패킷이 도착하거나 타이머 인터럽트 발생 시 현재 실행 스트림을 중단하는 것이 가능하더라도 단일 프로세서는 한 번에 하나의 컴퓨터 명령만 실행합니다. 일반적으로 패킷 큐와 같은 데이터 구조를 조작할 때 드라이버는 NIC에서 인터럽트 비활성화, 조작 수행, 인터럽트 다시 활성화를 수행합니다. 유니프로세서 환경의 많은 스레드는 동시에 실행되는 것처럼 보이지만 실제로는 인터리브된 시간 조각에서 실행됩니다.

다중 프로세서 환경에서 프로세서는 여러 컴퓨터 명령을 동시에 실행합니다. 드라이버는 한 드라이버 함수가 공통 데이터 구조를 조작할 때 다른 프로세서의 동일하거나 다른 드라이버 함수가 공유 데이터를 동시에 수정하지 않도록 동기화해야 합니다. 모든 드라이버 코드는 대칭 SMP(다중 프로세서) 컴퓨터에서 재진입됩니다. 이 리소스 보호 문제를 제거하기 위해 Windows 디바이스 드라이버는 스핀 잠금을 사용합니다. 자세한 내용은 네트워크 드라이버의 동기화 및 알림을 참조하세요.