デバイスドライバとは、ハードウェアデバイスの低レベルの入出力操作を管理するカーネルモジュールのことです。デバイスドライバは、カーネルがデバイスとのインタフェースを取るために呼び出すことのできる標準的なインタフェースで書かれています。また、デバイスドライバをソフトウェア専用にして、RAM ディスク、バス、擬似端末など、ソフトウェアでのみ存在するデバイスをエミュレートすることもできます。
デバイスドライバには、デバイスとの通信に必要なデバイス固有のすべてのコードが含まれています。このコードには、システムの残りの部分へのインタフェースの標準セットが含まれています。このインタフェースは、システムコールインタフェースがアプリケーションプログラムをプラットフォーム固有の詳細から保護するように、カーネルをデバイス固有の詳細から遮蔽します。アプリケーションプログラムやカーネルの残りの部分では、デバイスに対応するためのデバイス固有のコードがたとえあったとしても、ほとんど必要ありません。このような点で、デバイスドライバはシステムの移植性を高め、システムの保守を容易にします。
Oracle Solaris オペレーティングシステム (Oracle Solaris OS) が初期化されると、デバイスは自らを識別し、デバイスの階層であるデバイスツリーに編成されます。実際には、デバイスツリーはカーネルのハードウェアモデルです。ツリー内では、個々のデバイスドライバは子を持たないノードで表されます。このようなノードは、リーフドライバと呼ばれます。ほかのドライバにサービスを提供するドライバはバスネクサスドライバと呼ばれ、子を持つノードで表されます。ブートプロセスの一環として、物理デバイスがツリー内のドライバにマップされるため、必要なときにそれらのドライバを特定できるようになります。Oracle Solaris OS によるデバイスへの対応の仕方についての詳細は、Chapter 2, Oracle Solaris Kernel and Device Treeを参照してください。
デバイスドライバは入出力の処理方法によって分類されます。デバイスドライバは 3 つの大まかなカテゴリに分類されます。
ブロックデバイスドライバ – 入出力データを非同期のチャンクとして処理することが適切な場合。ブロックドライバは通常、ディスクなどの物理的にアドレス可能な記憶メディアでデバイスを管理するために使用されます。
文字デバイスドライバ – 入出力を連続的なバイトの流れで実行するデバイス向け。
STREAMS モデル (下記を参照) を使用するドライバ、プログラム式入出力、ダイレクトメモリーアクセス、SCSI バス、USB、その他のネットワーク入出力は文字カテゴリに含まれます。
STREAMS デバイスドライバ - カーネル内の文字入出力に対して streamio(7I) セットのルーチンを使用する文字ドライバのサブセット。