デバイスドライバー

読み:デバイスドライバー
外語:device driver 英語
品詞:名詞

デバイスを、ソフトウェアから操作できるように用意した汎用ライブラリのこと。音引きを略して「デバイスドライバ」、あるいは単に「ドライバー」「ドライバ」ともいう。略称「デバドラ」。

目次

ハードウェアアプリケーションから利用したい場合、アプリケーションから直接操作せず、一旦デバイスドライバーと呼ばれるソフトウェア群を緩衝的に用意して利用する。

例えばディスプレイドライバーの場合、そのオペレーティングシステム(OS)の画面描画に関するAPIからドライバーが呼び出され、呼び出されたAPI通りの画面処理をグラフィックプロセッサーに対して与える処理を行なう。

通常はOSが提供する標準化に則った仕様とすることで、ハードウェアが変わっても、アプリケーションソフトウェアには手を加えること無く継続利用可能というメリットが享受できる。

内部構造

デバイスドライバーの内部構造は、OSの仕様が反映されるため、OSごとに大きく異なる。

Windowsひとつとっても、16ビットの時代、32ビットの時代、64ビットの時代で違いがある。また32ビットでも環境により差がある。

  • VxD ‐ Windows 3.0〜95まで
  • WDM ‐ Windows 98/2000〜XP
  • WDF(Windows Driver Foundation) ‐ Windows Vista〜
  • UDI ‐ Intelが提唱した、OSを問わない標準仕様

動作環境

現役の多くのOSでは、μITRONのようにユーザー空間カーネル空間の区別がないものを除いて、デバイスドライバーはカーネル空間で動作する。

このため、ユーザー空間用の標準Cライブラリなどが提供する機能の一切が使えない。

UNIX互換システムを例とすると、ユーザー空間でなら使えるような、open(2)も、printf(3)も、malloc(3)も、使うことができない。

Linuxでは代替として、printk(9)、kmalloc(9)などを用意している。

種類

ブロックデバイス

  • 決められた単位(ブロック)単位でデータを入出力するデバイス
  • ファイルシステムを構築でき、mount(8)できるもの。

キャラクターデバイス

  • 1バイト単位でデータを入出力するデバイス
  • 一般にはこのスタイルが多く使われている。

構造

構成方法

Linuxのドライバーは、3種類の部分から構成される。構成方法は伝統的なUNIXと同様である。

  • 初期化ルーチン
  • トップハーフ ‐ 入出力要求に対するサービスルーチン
  • ボトムハーフ ‐ 割り込みハンドラー

割り込みベクターテーブルには、ボトムハーフハンドラーが登録されることになる。

初期化ルーチン

起動時および終了時の初期化処理である。

モジュールがロードされた時(OS起動時など)にinit_module()が呼び出され、モジュールがアンロードされたとき(rmmodされたとき)にcleanup_module()が呼びされる。

init_module()でハードウェアのチェックなどを自身で行ない、自分自身をデバイスドライバーとしてOSに登録する。

cleanup_module()では、OSに登録した自分自身を削除する。

トップハーフ

アプリケーションがopen(2) read(2) write(2) ioctl(2) close(2)などのシステムを発行すると、カーネル経由でこのルーチンが呼び出される。

具体的には、初期化ルーチンでregister_chrdevとしてキャラクターデバイスを登録する際に対応する処理関数へのポインターの配列引数に渡す。

ボトムハーフ

タイマー割り込みなどの割り込みハンドラー

ハンドラーだが、実際はカーネルスレッドという形態である。

アプリケーションとのインターフェイス

アプリケーションは、OSが用意しているインターフェイスであるシステムコール経由で、ファイル単位の入出力要求をおこなう。

アプリケーションからデバイスドライバーを直接見る方法はない。/devの下に仮想化されたスペシャルファイルが見えるだけである。

アプリケーションは、これをopen(2)でオープンし、あとはファイルのように扱う。

AndroidはLinuxカーネル 2.6の上にミドルウェアが搭載された環境である。

どのレイヤーで開発するかで、次の二種類が存在する。

  • HAL
  • Linuxドライバー
関連する用語
デバイス
オペレーティングシステム

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club