3

干杯...

我知道它代表硬件抽象层,但它到底是做什么的?它是为 VB 等高级语言设计的与硬件通信吗?IN/OUT 指令是调用 HAL 例程还是直接通过 I/O 管理器与硬件的设备驱动程序通信?

提前致谢

4

3 回答 3

5

我知道它代表硬件抽象层,但它到底是做什么的?

它本质上是 NT 内核的“不可移植”部分,作为单独的模块提供,以便 NT 可以移植到多个处理器架构。示例:中断路由。

它是为 VB 等高级语言设计的与硬件通信吗?

不,它是作为 NT 内核的支持例程。如果您在用户模式下编码(就像在 VB 等高级语言中一样),您无需知道它的存在。

IN/OUT 指令是调用 HAL 例程还是直接通过 I/O 管理器与硬件的设备驱动程序通信?

当您使用inandout指令时,这是直接与 CPU 对话。这与您正在讨论的 NT 内核主题完全无关。那里没有 HAL。没有 NT I/O 管理器。这些指令是 x86 指令集提供的用于通过 I/O 地址与设备通信的指令。

于 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 回答