Multiprocessor Considerations for Kernel-Mode Drivers
Updated: October 28, 2004
File name: MP_issues.doc
About This Download
Hyper-threading and future technologies mean that all new machines will eventually support more than one processor. Therefore, every Windows driver must be designed to handle the concurrency and synchronization requirements that multiprocessor systems impose and must be thoroughly tested on both single-processor and multiprocessor systems.
Because the Windows kernel is fully preemptible, writing drivers to run on multiprocessor systems is no different from writing drivers to run on single-processor systems. However, errors in synchronization and locking are more likely to occur on multiprocessor systems because code from a single driver can run simultaneously on more than one processor. A driver that has been tested and debugged on single-processor systems may fail when run on a multiple-processor system because of previously undetected bugs.
To write drivers that operate correctly on all Windows platforms, you should be familiar with the following:
In addition, Windows Server 2003 includes limited support for cache-coherent non-uniform memory access (ccNUMA) architectures; expanded support is planned for Windows Vista. This paper includes a brief discussion of driver issues for such architectures.
This information applies for the following operating systems:
Included in this white paper: