Insider's Eye: Windows 2000のデバイス ドライバを探る第2回 WDMは何が変わったのか(2/2)元麻布春男 |
||
Windows 2000では、サウンドも含めて、デバイス ドライバはすべてカーネル モードへ移行している。したがって、DirectSoundなども含め、すべてのDirectXファンクションのサポートが可能だ。実際、出荷されるWindows 2000には、DirectX 7が搭載されている。もちろん、オーバーヘッドもWindows NT 4.0よりは減少するハズだ。
しかし、このことは同時に、前述した2つの利点と相反することになる。移植性と信頼性の低下の問題である。しかし、移植性については、もはや気にする必要がなくなってしまった。かつてサポートされたRISCプロセッサは、すでにサポートの対象外となり、事実上サポートされているプラットフォームはx86のみとなったからだ。
もう1つの利点である信頼性についてはどうだろう。デバイスドライバがカーネル モードへ移行したことは、ドライバのエラーがOSにとって致命傷となるケースが増えるということでもある。これを防止するためWindows 2000では、「ドライバの署名(Driver Signing)」という機能が提供される(すでにWindows 98 Second Editionで採用されており、Windows 2000が初めてというわけではないが)。「ドライバの署名」は、Microsoftが行っているWHQL(Windows Hardware Quality Lab)テストをパスしたドライバに付与されるデジタル署名のことだ。この署名は、デバイス ドライバのプロパティ タブで簡単に確認できる。つまり、デバイス ドライバの信頼性をWHQLでテストすることで、ドライバによる信頼性の低下を避けようというわけだ(しかし、これがうまく機能するかどうかは、WHQL次第だろう。「ドライバの署名」はあくまでも信頼性保証のためのフレームワークにすぎない)。
デバイス ドライバのデジタル署名の確認方法 |
|||
デジタル署名がついたデバイス ドライバかどうかは、[デバイス マネージャ]を起動し、調べたいデバイス ドライバのプロパティを表示させることで簡単に分かる。 | |||
|
[システムのプロパティ]ダイアログの[ハードウェア]タブ |
||||||
[システムのプロパティ]の[ハードウェア]タブでは、[デバイス マネージャ]グループに[ドライバの署名]ボタンが加わり、デジタル署名のないデバイス ドライバについてのオプションが設定できるようになった。 | ||||||
|
Windows 2000のドライバ署名オプション |
[ドライバ署名オプション]では、デジタル署名が行われていないデバイス ドライバに対する扱いが設定できる。必要なら、[ファイルの署名の確認]グループの[ブロック - 署名されていないファイルのインストールを防ぐ]をチェックすることで、ユーザーが不用意にデバイス ドライバをインストールしてしまうことを禁止することが可能だ。 |
ドライバ階層化のメリット/デメリット
さて、ここまではWindows NTの標準ドライバモデルであるWindows NTカーネル モード ドライバの特徴について触れてきたが、もう1つの特徴は、ドライバ レイヤ全体が階層化されていることだ。図4はWindows 2000の一般的なドライバの階層化を示したものだが、ドライバ レイヤが何階層に及ぶかは、デバイスによって異なる。
図4 Windows 2000の一般的なドライバ レイヤ |
Windows 2000のドライバは、図のように細かく複数の階層により構成されている。これにより、システム レスポンスを良好に保つことが可能となる。 |
図5は、SCSIハードディスクにアクセスする際に利用するであろうデバイス ドライバを図にしたものだ。アプリケーションのファイルI/O要求は、カーネル モードのシステム サービスを経て、ファイル システム ドライバへと送られ、SCSI-2クラス ドライバ(ハードディスクに対するコマンドセットを定義)、SCSIポート ドライバ(SCSIコントローラに対するアクセスを定義)を経由して、ハードウェアに伝えられる。SCSI-2クラス ドライバが、ANSIの標準に基づいており、ベンダごとに対応する必要がないため、ミニドライバを必要としない(逆に特定のハードウェア固有のコマンド、ベンダ ユニークに対応する必要があれば、このクラス ドライバを置きかえればよい)のに対し、SCSI-2クラス ドライバのコマンドをホストアダプタやコントローラ チップに渡すSCSIポート ドライバは、こうしたハードウェアに依存した部分を記述したミニドライバが必要になる。
図5 SCSIハードディスクへのアクセスで利用されるデバイス ドライバ |
SCSIディスクのアクセスに利用されるデバイス ドライバを示したもの。SCSI-2クラス ドライバは、ANSI標準が定められているため、ベンダごとに個別に対応する必要がない。そのため、ほかのデバイス ドライバに比べると構造が簡単になっている。 |
では、なぜこのようにデバイス ドライバを細かく階層化するのか。最大の理由は、個々のデバイス ドライバをシンプルかつ簡素にすることで、開発を容易にすると同時に、開発の際に生じる可能性のあるバグを最大限減らすことで、信頼性を高めることだ(Windows
NTがマルチプラットフォームであった時点においては、汎用性や移植性も重要な利点だっただろう)。とにかく、「WDM」=「階層化ドライバ」ではなく、Windows
NTではそもそものドライバ アーキテクチャが階層化されていた、ということを覚えておいてほしい。ただし、何事にも例外はある。たとえば、ディスプレイドライバは、図に示したような複雑な階層化は行われていない(行われる予定もない)。それは、ディスプレイ
ドライバに求められる性能水準がきわめて高いため、階層化によるオーバーヘッドが許されないと考えられているからだ。
INDEX | ||
なぜWindows 2000を使わないのか | ||
WDMは何が変わったのか(1/2) | ||
WDMは何が変わったのか(2/2) | ||
WDMの理想とするところ | ||
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|