このページの本文へ

前へ 1 2 3 4 次へ

基礎から覚える 最新OSのアーキテクチャー第4回

Windowsを動かすデバイスドライバーの仕組み 前編

2011年09月15日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

 オペレーティングシステム(以下OS)は、デバイスを管理しているというのが前回の話だった。一般にOS中で、デバイスを直接操作する部分は「デバイスドライバー」と呼ばれている。OSはデバイスを一定の「形」で扱う。そのルールに沿って、さまざまなデバイスを一定の形に見せるように働くのが、デバイスドライバーだ。

 例えば入力機器にはさまざまなものがあるが、「入力が行なわれたか」を通知して、「入力されたデータを読み込む」という形で、OSが入力機器を統一的なやり方で操作できるようにするのが、デバイスドライバーの働きのひとつである。

 現在のWindows 7やWindows Server 2008R2では、従来からの「WDM」(Windows Driver Model)型式のデバイスドライバーと、Windows Vistaから追加された「WDF」(Windows Driver Foundation)型式のドライバーがある。今回はWDMを中心に解説して、次回にWDFについて解説しよう。

共通部分と差異部分にわかれる
Windowsのドライバー構成

 Windowsのデバイスドライバーは、大半がカーネルモードで動作する。そして、ファイルシステムドライバーとそうでないドライバーがある。ファイルシステムドライバーは特定のデバイスのためのドライバーではなく、「NTFS」や「FAT」といったファイルシステムを操作するためのドライバーである。

 これらがデバイスドライバーと同じ構造となっているのは、ファイルシステムの追加(例えばDVD、BDといった光ディスクフォーマットなど)をあとから導入可能とする「インストーラブル・ファイル・システム」(IFS)を実現するためだ(図1)。

図1 NT系32bit OSでのカーネルとドライバー、ハードウェアの構造

 世の中にはいろいろなデバイスがあり、中には外側だけ違っていて中身は同じというデバイスもある。逆に中身は多少違うが、制御基板上に乗っているコントローラーが同じ(なので制御の仕方も同じ)という場合だってある。さらにUSBデバイスなどでは、機能が似たデバイス、例えばHDDとメモリーカードリーダーは、どちらも「USB大容量ストレージデバイス」に分類されている。

 Windowsでは原則として、デバイスひとつに対してひとつのデバイスドライバーが必要になるが、似たようなデバイスではドライバー内部の共通部分も多い。それをひとつひとつ作り分けていたのでは、ドライバー開発に膨大な時間と手間がかかってしまうし、ドライバーのファイルが大量に必要になる。

 そこでWindowsでは、「クラスドライバー」という仕組みを使う(図2)。そして、ある種類のデバイスに対して共通した部分は、クラスドライバーとして共用できるようにしている。

Windowsでのデバイスドライバーの構成。いくつかのドライバーを組み合わせて実際のハードウェアを操作している

 しかし、例えば同じコントローラーチップを使っていても、アクセスするI/Oアドレスが違うなんて場合もある。このような細かい違いに対応するために「ミニポート」ドライバーというものを作り、前述のクラスドライバーと組み合わせてひとつのデバイスを制御している。こうして処理の似通ったドライバーは、共通部分と差違部分に分けることができ、それぞれを適切に組み合わせることで、Windowsは多数のデバイスに対応できるようになる。

前へ 1 2 3 4 次へ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン