0

ハードウェア/デバイスの独立性について読むとき、ウィキペディア ( http://en.wikipedia.org/wiki/Device_independence#Desktop_computing ) からのこのステートメントは、次のように述べています。

アプリケーション ソフトウェアは、それが使用されるハードウェアについて何も知る必要はありません。代わりに、標準化された抽象化レイヤーを通じてハードウェアの機能を検出し、抽象化されたコマンドを使用してハードウェアを制御します。

BIOS ルーチン/デバイス ドライバー/HAL/OS と、ハードウェア機能の検出に関するデバイス コントローラーとの間の下位レベルの対話について知りたいと思いました。

ハードウェアの独立性に役立つこれらのエンティティ間の通信を理解するのを手伝ってください。

4

1 に答える 1

1

通常、ハードウェア デバイスは、何らかの標準バスを介してメイン コントローラに接続します。例 - PCI、PEX、USB。

バス上に接続された各デバイスには、バス コントローラによって、デバイス #、バス #、関数 # などが割り当てられます。

最新のバス コントローラーは、スキャンを実行する機能をメイン コントローラーに提供するか、デバイスがバスにホット プラグされたときにイベントを送信します。

検出された各デバイスごとに、バス コントローラの標準コマンド (デバイス ID、バス番号によるデバイスの読み取り/書き込みレジスタなど) を使用して、次のような詳細についてデバイスに問い合わせることができます。

  • メーカーID
  • デバイスID
  • クラス (コントローラ / ネットワーク デバイス / ヒューマン インターフェイス / イメージング デバイス / など)

バスの種類ごとに、これらすべての詳細は、接続されているすべてのハードウェア デバイスで同じ方法で利用できる必要があります。これにより、OS は抽象化レイヤーを使用できるようになります。

デバイスが検出および識別されると、OS はすべての特定のバスに登録されたデバイス ドライバーのプローブ関数を呼び出します。プローブ関数は、上記の詳細を使用して、デバイスを処理できるかどうかを判断します。デバイス ドライバーのプローブが成功すると、ドライバーのインスタンスが割り当てられ、HW にアクセスする必要があるアプリケーションで直接使用できるようになります。

例: USB PC CAM は USB ポートに接続します。USB バスコントローラからメイン CPU にイベントが送信されます。CPU は、標準の USB バス コントローラ関数を使用して、製造元とデバイス ID、デバイス クラス、関数などを学習し、すべての USB 登録済みデバイス ドライバ プローブ関数を呼び出します。

適切なデバイス ドライバーがインストール (登録) されている場合、デバイスのインスタンスが正常に作成され、ビデオ アプリケーション (Skype など) は、ドライバー SW によって提供される DLL を介して直接使用できます。

お役に立てれば。

于 2014-11-11T09:04:15.463 に答える