デバイスドライバ
Windowsでは、Windows 98以降、様々なバージョンのWindowsごとにドライバを書く手間を省くために、Win32 ドライバモデル (WDM) アーキテクチャが導入された。 Windowsでは、ドライバの最下層にハードウェアを抽象化する層である Hardware Abstraction Layer (HAL) を設けて、プラットフォームによる違いを吸収する仕組みも存在する(386, 486, Pentium, Alpha, SPARC, IA-32, IA-64, EM64Tなどといった、CPUの違い、CPUアーキテクチャの進化を吸収する)。
Linuxでは、デバイスドライバをLinuxカーネルの一部として構築することもできるし、Linuxカーネルとは別のモジュールとして構築することもできる。MakedevにはLinuxでの周辺機器の一覧が含まれており、ttyS(端末)、lp(パラレルポート)、hd(ディスク)、loop(ループデバイス(英語版))、sound(mixer(英語版)、sequencer、dsp、audio を含む)など様々な周辺機器が定義されている。
ロード可能なデバイスドライバは、Windowsでは ".sys"、Linuxでは ".ko" という拡張子のファイルになっている。この形のデバイスドライバは必要なときだけロードできるという利点があり、カーネルメモリの節約につながる。
以上は、ハードウェアに合わせて、ドライバを各種OSに対して用意するという方針である。これとは逆に、PDAなどの開発現場では、ハードウェアの仕様をできるだけ同じにすることでデバイスドライバの開発の手間を省く、という方針が採用されているケースもある。
広く共通化が進んだハードウェア(キーボード、マウス、USBなど)では、OS内部に標準ドライバ(ジェネリックドライバ)が含まれている場合が多い。標準ドライバがサポートしないハードウェアに関しては、一般に、そのハードウェアを提供するメーカー(ベンダー)が、デバイスドライバを製品にフロッピーディスクやCD-ROMで添付するか、あるいはインターネット上で配布する。
プリンターやグラフィックスカードなど一部の製品では、ベンダーの提供するドライバと標準ドライバの両方が用意されている場合がある。標準ドライバは最低限の機能を有する安定したドライバ、ベンダー提供のドライバはそのハードウェアのもつ機能を最大限利用できる最適化されたドライバである場合が多い。