3

乾杯...

それがハードウェア アブストラクション レイヤーの略であることは理解していますが、正確には何をするのでしょうか? VB のような高級言語がハードウェアと通信できるように設計されていますか? IN/OUT 命令についてはどうですか?これらの命令は HAL ルーチンを呼び出しますか、または I/O マネージャーを介してハードウェアのデバイス ドライバーと直接通信しますか?

前もって感謝します

4

3 に答える 3

5

それがハードウェア アブストラクション レイヤーの略であることは理解していますが、正確には何をするのでしょうか?

これは基本的に、NT カーネルの「移植性のない」部分であり、NT を複数のプロセッサ アーキテクチャに移植できるように別のモジュールとして提供されます。例: 割り込みルーティング。

VB のような高級言語がハードウェアと通信できるように設計されていますか?

いいえ。これは、NT カーネルのサポート ルーチンとして意図されています。ユーザー モードでコーディングしている場合 (VB などの高級言語の場合と同様)、それが存在することを知る必要はありません。

IN/OUT 命令についてはどうですか?これらの命令は HAL ルーチンを呼び出しますか、または I/O マネージャーを介してハードウェアのデバイス ドライバーと直接通信しますか?

inおよび命令を使用するとout、これは CPU と直接通信します。これは、あなたが議論している NT カーネルのトピックとはまったく関係ありません。そこにはHALはありません。NT I/O マネージャーはありません。これらの命令は、I/O アドレスを介してデバイスと通信するために x86 命令セットが提供するものです。

于 2012-06-17T02:17:16.840 に答える
0

HALは、オペレーティングシステムからハードウェアの詳細を「抽象化」するように設計されています(これはカーネルコンポーネントです)。

マシン固有の命令(afaikにはコンテキストスイッチによるAVX状態の保存などの処理が含まれます)や、割り込み(Google'Interrupts IDT'(引用符なし))などの他の詳細を処理するためのルーチンをカーネルに提供します。

カーネルはまだ一部の場所でハードウェアと直接通信するため、HALはカーネルの下に完全には配置されないことに注意してください。ただし、HALは、その機能の多くをカーネルに依存しています(そのため、多くの場合、一致する「セット」で提供されます)。

http://support.microsoft.com/kb/99588

于 2012-06-17T02:03:29.187 に答える
0

HAL は分離レイヤーのようなものです。これは、レイヤーの両側にあるものが変化する可能性があり、(理論的には) 反対側には影響を与えないことを意味します。

これは、さまざまな種類のハードウェアが HAL の下にある可能性があり、HAL を介して呼び出すソフトウェアは気にしないことを意味します。

于 2012-06-17T02:22:22.517 に答える