第1章 WDM の概要

10
第1章 WDM の概要
1.1
WDM の背景
WDM(Windows Driver Model)は 1996 年の WinHEC にて発表された。
WDM の目的の 1 つとして、Microsoft 社は今後 WindowsNT カーネルへの統
合を行うことが挙げられる。WindowsNT では Plug & Play に非対応であった
ことなどにより、周辺機器ベンダからのデバイスドライバのサポートが
Windows98 に比べて不充分であった。
しかし、Windows2000 の登場により、WDM 部分のドライバは Windows98
とバイナリレベルで共通化を行うことができるため、WindowsNT カーネルへ
の移行が段階的に行われていくことは間違いない。
WDM は当初、Win32 Driver Model の略として表記されていたが、現在で
は 64 ビットの CPU を視野に入れ、Windows Driver Model として表記されて
いるようである。WDM は WindowsNT のドライバモデルをベースとし、Plug
& Play 機能を強化したものである。
1.1.1
Windows98 の構成
アプリケーション
ユーザインタフェース
ユーザモード
カーネルモード
レジストリ
Windows コア
仮想マシン
マネージャ
(VMM)
インストーラブル
ファイルシステム
マネージャ
(IFS)
コンフィギュレーション
マネージャ
デバイスドライバ
ハードウェア
図 1-1 Windows98 の構成
11
Windows98 は図 1-1 Windows98 の構成に示すモジュール構成となってい
る。
(1)仮想マシンマネージャ(VMM)
仮想マシンマネージャ(以降 VMM: Virtual Machine Manager と表記)は、
Windows98 のコアとなるモジュールであり、アプリケーションやシステムの
プロセスが必要とするリソースの割り当て、スケジューリングを行う。この機
能により、それぞれのプロセスが個別のマシン環境で実行されているかのよう
に振舞うことができる。また、MS-DOS アプリケーションの互換性のため、
MS-DOS モードのアプリケーション環境をサポートする。
(2)インストーラブルファイルシステムマネージャ(IFS)
Windows のファイルシステムは、複数のファイルシステムに対応するため、
ファイルシステムのドライバそのものも登録可能となっている。これらのファ
イルシステムのドライバには、VFAT、CDFS、UDF などがある。また、ネッ
トワークパスのファイルシステムをも解釈してサポートする。ファイルシステ
ムのドライバと、ブロック I/O をサポートするサブシステムから構成される。
(3)コンフィギュレーションマネージャ
コンフィギュレーションマネージャは、バス上のデバイスを列挙するバスエ
ニュメレータ(ISA、PCI、シリアル、USB、IEEE1394 を対象とした)、I/O
領域や割込み、DMA などのリソース割り当てが重複しないように管理するア
ービトレータを呼び出す。エニュメレータ自身もコンフィギュレーションマネ
ージャに動的に登録/登録解除することができるため、柔軟なシステム構成を行
うことができる。なお、コンフィギュレーションマネージャは Windows の電
源管理も行う。コンフィギュレーションマネージャは構成したシステムの情報
を管理するため、レジストリを使用する。
(4)Windows コア
Windows コアとは、API の機能を提供する、USER、GDI、KERNEL のモ
ジュールからなっている。USER は、キーボード、マウス、ウインドウなどの
ユーザインタフェースに関する機能を提供する。GDI は画面、プリンタなどグ
ラフィック描画に関する機能を提供する。KERNEL はメモリの割り当て、I/O
のアクセス、例外処理のサポートを行う。
(5)ユーザインタフェース
アクティブデスクトップ、ネットワークコンピュータなどのシェルモジュー
ル。また、Windows95 に以降の、リストビュー、プログレスバーといったカ
スタムコントロールを含む。
(6)レジストリ
12
レジストリは Windows システムのデータベースであり、ハードウェア、ソ
フトウェアに関連した情報を保持している。
(7)デバイスドライバ
デバイスドライバはハードウェアを操作するためのモジュールだが、複雑さ
を避けるため、現在のドライバは階層構造となっている。このことによって、
デバイスによっては、ハードウェアベンダがハードウェアのアクセスに関する
部分のみを作成すれば良いようになっている。
なお、Windows98 では WDM サポートのため、ntkern.vxd という特別なド
ライバで WDM が使用する関数をエクスポートしている。
1.1.2
Windows2000 の構成
アプリケーション
ユーザモード
カーネルモード
PnP
マネージャ
PnP
マネージャ
Win32
サブシステム
I/O
マネージャ
レジストリ
パワー
マネージャ
…その他
デバイスドライバ
エクゼクティブ
ハードウェア抽象化レイヤ(HAL)
ハードウェア
図 1-2 Windows2000 の構成
Windows2000 は図 1-2 Windows2000 の構成に示すモジュール構成となっ
ている。
(1)ハードウェア抽象化レイヤ
ハードウェア抽象化レイヤ(HAL)は、マイクロカーネル、エクゼクティブの
モジュールにハードウェアをアクセスする標準的(特定のプロセッサにとらわ
れない)な手段を提供する。対象となるのは主に、I/O ポート、DMA、割り込
み、クロックなどである。
(2)マイクロカーネル
13
マイクロカーネルは OS の最小限の機能を持っており、HAL と同様にプロセ
ッサ固有のモジュールとなっている。プロセスのスケジューリング、同期制御、
割り込み制御の基本機能を提供する。
(3)エクゼクティブ
WindowsNT カーネルでは、PnP マネージャ、パワーマネージャなどのモジ
ュール群をエクゼクティブと総称している。エクゼクティブレベルのモジュー
ルはプロセッサに依存しないように設計されている。エクゼクティブのモジュ
ールには、図 1-2のものに加えて、以下のものがある。
l
I/O マネージャ
I/O マネージャは入出力の管理を行う。アプリケーションなどの入出力
要求を I/O リクエストパケットに変換するなど、入出力要求をパケット
管理する機能を提供している。
l
オブジェクトマネージャ
オブジェクトマネージャはデバイス、ファイル、イベントなどシステム
内すべてのオブジェクトの名前を管理している。また、オブジェクトそ
のものの生成、削除、参照状態などの管理を行う。
l
セキュリティ参照モニタ
セキュリティ参照モニタはスレッドがシステムリソースへのアクセス権
限を持っているかどうかの正当性検査を行う。
l
プロセスストラクチャ
プロセスストラクチャはプロセスとスレッドの生成、削除を管理してい
る。
l
LPC
ローカルプロシージャコール(LPC)機能はリモートプロシージャコール
(RPC)のローカル環境の通信サービスを実現する。
l
メモリマネージャ
メモリマネージャは基本機能として、プロセスにメモリを与え、物理的
なメモリの残りが少なくなればデータをディスクにページアウトする。
このために、仮想アドレスと物理アドレスの変換をサポートしている。
l
キャッシュマネージャ
キャッシュマネージャはメモリマネージャに依存して作られており、メ
モリマネージャと二重にキャッシングしないようになっている。また、
ネットワーク、CD-ROM など外部のデータについてキャッシュを行うよ
うに設計されている。
l
コンフィギュレーションマネージャ
14
コンフィギュレーションマネージャはデバイスマネージャで表示される
ようなデバイス接続のツリーをレジストリで管理する。
l
PnP マネージャ
I/O マネージャと協調し、デバイスに Plug & Play のリクエストを発行
する。また、デバイスの状態変更イベントを収集する。
l
パワーマネージャ
パワーマネージャはポリシーマネージャと共に電源管理の API、イベン
トをサポートする。そして、デバイスなどに対して電源制御を行うよう
リクエストを発行する。ポリシーマネージャはユーザモードのモジュー
ルで、システムの状態を監視し、ユーザ、アプリケーション、ドライバ
の状態をパワーポリシーに統合する。
(4)Win32 サブシステム
Win32 API を提供するアプリケーション環境。WindowsNT の設計はサブシ
ステム自体も拡張機能として追加可能となっている。
(5)PnP マネージャ(ユーザモード)
ユーザモードの PnP マネージャはエクゼクティブの PnP マネージャと協調
して動作し、Windows98 のドライバインストール用 API のスーパーセットと
なる API を提供する。
(6)レジストリ
レジストリは Windows システムのデータベースであり、ハードウェア、ソ
フトウェアに関連した情報を保持している。Windows 2000 では、レジストリ
のアクセスもセキュリティ保護されている。
1.1.3
Windows のロードマップ
WindowsNT の系列と Windows9x の系列はそれぞれ、企業ユーザ、一般の
消費者向けという用途で使われることが想定されていた。WindowsNT では
MS-DOS の互換性というメリットよりも、16 ビットコードを混在させないこ
とによる安定性が重視され、Windows9x では MS-DOS との互換性やユーザイ
ンタフェースの改善、Plug & Play の早期サポートなど、使い勝手の面が重視
されてきた感がある。
ちなみに、16 ビットコードはアドレス空間が狭く、メモリアドレッシッング
の切り替えにセグメントを切り替えなければならず、実行コストがかかること、
コードがリエントラントでないことなど、現在では、これらのデメリットの方
が、互換性を確保することのメリットにまさることになっている。