Windows 95で初めて採用された「プラグ&プレイ」は,どのような技術によって周辺装置を自動的に認識できるのだろうか。本来,周辺機器はデバイス・ドライバがなければアクセスできないはず。しかし,プラグ&プレイ対応デバイスが持つ「コンフィギュレーション・レジスタ」の情報があれば,適切なデバイス・ドライバを自動的に探し出せる。

 PCに新しい周辺機器(デバイス)を接続すると,多くの場合,Windows 2000/XPはそれを自動認識して即座に利用可能な状態にしてくれる。いわゆる「プラグ&プレイ」機能のおかげである。まさに「取り付けるだけで(Plug),動く(Play)」ようになるわけだ。この機能は,コンシューマ系OSではWindows 95から,企業向けのNT系ではWindows 2000から搭載されている。

一昔前,周辺機器の交換・増設は“バクチ”

 プラグ&プレイが当たり前になってしまうと,そのすごさを実感することはあまりないだろう。しかし,ちょっと前のWindows NT 4.0にはプラグ&プレイ機能がなく,周辺機器に関連したトラブルが色々と起こっていたのだ。

 例えば,Windows 3.1やNT 4.0の時代には,「Windows用」と名の付いた周辺機器であっても,自分のマシンで問題なく動作するかどうかは“バクチ”に近いものだった。せっかく買ってきたアップグレード・パーツが,全く無駄になってしまうことも少なくなかったからである(図1)。セットアップ作業にも,かなりのスキルが要求された。現在ではほとんど考えられないことだが,当時,本当に起こった話である。PCとの付き合いが長い読者なら経験があるはずだ。

図1●プラグ&プレイが登場する以前,新しいハードウエアの追加は“バクチ”だった<br>パソコンに新しいコンポーネントを追加した場合,既存のコンポーネントとの間でパソコンのリソースを奪い合って正常に動作しないことがある。プラグ&プレイが登場する以前は,ユーザーが自力で競合を解決しなければならなかったが,必ず解決できるとは限らなかった。
図1●プラグ&プレイが登場する以前,新しいハードウエアの追加は“バクチ”だった
パソコンに新しいコンポーネントを追加した場合,既存のコンポーネントとの間でパソコンのリソースを奪い合って正常に動作しないことがある。プラグ&プレイが登場する以前は,ユーザーが自力で競合を解決しなければならなかったが,必ず解決できるとは限らなかった。
[画像のクリックで拡大表示]

 こうしたトラブルの最大の原因は,既にPCに組み込まれているハードと新規導入するハードが,PCの特定のリソースを奪い合うことによる。詳細は後述するが,複数の周辺機器が同じ「割り込み」や「I/Oアドレス」を使おうとして衝突するのだ。これを解決できないと,どちらかの周辺機器の使用をあきらめなくてはならなかった。

 プラグ&プレイ機能の登場と対応デバイスの普及により,これらの問題は過去の話となった。それにしても,なぜWindows OSのプラグ&プレイ機能はハードウエアを自動認識して,正常に動作させられるのだろうか。今回はその仕組みついて解説する。

 まず,プラグ&プレイの前提となる基礎知識として,「デバイス・ドライバ」「割り込み」「I/Oアドレス」の話から始めることにしよう。プラグ&プレイの主な役割は,これらの要素を適切に設定・調整することだからである。