ユーザーモードドライバー
ユーザーモードドライバー(英語:user mode driver)とは、ユーザーモードで動くように実装されたデバイスドライバーのことである。
概要[編集 | ソースを編集]
ユーザーモードドライバーとは、カーネルモードで動く低レベルなデバイスドライバーと、それをユーザーモードから利用できるようにするAPIライブラリ(SDK)を用いて作られたデバイスドライバーのことである。
古い時代のデバイスドライバーはカーネルモードで動いていた。そのためプログラマーが利用できるAPIは非常に限られ、C言語の標準ライブラリすらまともに使えないなどの制約があった。また、一般的なプログラムとは異なりデバッグも難しいうえに、ひとたびバグが発生するとOSごとクラッシュするという厄介な代物であった。
そこで考えられたのがカーネルモードで全てを処理するのではなく、ユーザーモードとのデータのやりとりに特化し、バグの入り込む余地がないくらいシンプルなカーネルモードで動くデバイスドライバーを用意し、それを利用してデバイスドライバーのメイン処理をユーザーモードで書いて動かしてしまおうという手法が登場した。これがユーザーモードドライバーである。
この概念自体は古くから存在していたが、全てがカーネルモードで動く旧来のデバイスドライバーに比べ、ユーザーモードドライバーは速度的に非常に不利であり、コンピューター、とくにPCの性能が低かった時代には敬遠されていた技術である。
近年ではPCの性能が桁違いに向上したこともあり、ファイルシステムやGPUなどの速度が求められる分野でもユーザーモードドライバーに移行しつつある。とくにファイルシステムはUNIXのFUSEやWindowsのDokanなどのSDKが登場したことで広く認知されるようになってきた。また、GPUなども徐々にユーザーモードドライバーに移行しつつある。
主な開発環境[編集 | ソースを編集]
- FUSE
- Dokan
- Windows Display Driver Model
- Windows Vistaで導入かつ強制されたビデオカード用のユーザーモードドライバー。混乱はあったが長い目でみるとGPUが非常に扱いやすくなった。