プラグアンドプレイの要件

プラグアンドプレイの要件

プラグ アンド プレイを使用すると、物理的な構成やリソースの競合を解決するためのユーザーの介入を必要とせずに、システム内のハードウェア コンポーネントを検出できます。

しかし、疑問に思うことがあります。プラグ アンド プレイを機能させるには、ハードウェアやソフトウェアに特別な要件があるのでしょうか。USB を例に挙げると、標準の Microsoft ドライバーを使用するために、USB メモリ スティックや USB ディスクに何か要件があるのでしょうか。

答え1

「プラグ アンド プレイ」は Windows 固有の用語で、元々は ISA デバイス、さらに PCI デバイスでオペレーティング システムが消費するリソースを選択できる方法を意味していました。BIOS は DOS でもこの操作を実行できますが、BIOS を脇に置いて Windows に完全に実行させることもできます。

リソースとは、A) メモリ アドレス、B) I/O アドレス、C) IRQ、および/または D) DMA チャネルです。デバイスは、これらのリソースのそれぞれ、いくつか、またはすべてを CPU との通信に使用できます。

したがって、もともと「プラグ アンド プレイ」ドライバーは、デバイスを初期化する方法、つまり他のデバイスが使用していないリソースを取得するようにデバイスを構成する方法を理解できるドライバーでした。

プラグ アンド プレイのもう 1 つの重要な部分は、デバイスが自身を識別するための標準的な方法です。PCI (およびおそらく ISAPNP) は、各デバイスが一意のベンダー ID とデバイス ID を持つように規定しています。これは USB にも引き継がれています。そのため、ホスト OS はデバイスが「何」であるかを検出し、適切なドライバーをロードできます。

さて、「ホットプラグ可能」に設計されたデバイスになると、状況は少し変わりますが、明らかに「プラグ アンド プレイ」という用語が依然として使用されています。ホットプラグ可能なデバイスのほとんどは、ホットプラグ不可能なデバイスによって「ホスト」されます。USB デバイスは、USB コントローラによって「ホスト」されます。USB コントローラ自体は、通常プラグ アンド プレイによって割り当てられる 1 つ以上のリソースを消費する PCI デバイスです。USB バスを介してデバイスと通信するには、USB コントローラを「経由」する必要があります。SCSI、IDE、および SATA デバイスでも同様の状況が存在します。

したがって、ホットプラグが機能するには、「ホスト」コントローラのドライバに、その「上位」のデバイスを表すドライバに何が起こっているかを伝えるメカニズムが必要です。つまり、USB コントローラ ドライバには、USB 大容量ストレージ ドライバにデバイスが切断されたことを伝える方法が必要です。「上位」ドライバには、再起動されるまで常駐し続けるのではなく、削除を要求されたときに正常に終了できるコードが必要です。

USB、SCSI、SATA などのほとんどのバス タイプは標準によって管理されており、ドライバーはそれを認識して実装する必要があります。

ハードウェア レベルでは、ほとんどのホットプラグ可能なデバイスは、コネクタの一部が静電気を放電し、電力を伝送するピンがデータを伝送するピンよりほんの一瞬早く接続されるように設計されています。USB および SATA コネクタのピンをよく見てください。これが、一部のピンが他のピンより長い理由です。IDE コネクタはこれを行わないため、ホットプラグには安全ではありません。

答え2

私の知る限り、プラグ アンド プレイの「魔法」には、次の 2 つの重要なコア部分しかありません。

  • ソフトウェアは、接続された新しいハードウェア (たとえば、USB 標準の一部) を識別できる必要があります。
  • ハードウェアを識別できます。特別なリクエスト (ベンダー固有のドライバーを使用せずに) を使用すると、一意の ID (通常はベンダー ID とデバイス/ハードウェア ID で構成されます) を取得できます。オペレーティング システムはこれらを使用して特定のハードウェアを識別し、ユーザーに問い合わせることなく適切なドライバーをインストールできます。
  • (オプション:) ハードウェアとソフトウェア (ドライバー) は、再起動を必要とせずに動作することが理想的です。

提供されている標準ドライバを使用するには、ハードウェアは送信されたコマンドに対して正しい反応を実装する必要があります(つまり、ハードウェアは正しい「言語」を話す必要があります)。ハードウェアの種類に応じて、これは通常標準化されています(例:USBマスストレージデバイス)。

関連情報