干杯...
我知道它代表的是硬件抽象层,但究竟是什么呢?它是否设计用于VB等高级语言与硬件进行通信?那些IN / OUT指令如何调用HAL例程或者是否通过I / O管理器直接与硬件的设备驱动程序通信?
提前致谢
答案 0 :(得分:5)
据我所知,它代表的是硬件抽象层,但究竟是什么呢?
它本质上是NT内核的“非可移植”部分,作为一个单独的模块提供,以便NT可以移植到多个处理器体系结构。示例:中断路由。
它是否适用于像VB这样的高级语言与硬件进行通信?
没有。它意味着NT内核的支持例程。如果您在用户模式下进行编码(就像在VB等高级语言中一样),则无需知道它是否存在。
IN / OUT指令如何将这些指令调用到HAL例程中,还是通过I / O管理器直接与硬件的设备驱动程序通信?
当您使用in
和out
指令时,这是直接与CPU通信。这与您正在讨论的NT内核主题完全无关。那里没有HAL。没有NT I / O管理器。这些指令是x86指令集通过I / O地址与设备通信的指令。
答案 1 :(得分:0)
HAL旨在“抽象”远离操作系统的硬件细节(它是内核组件)。
它为内核提供了处理机器特定指令的例程(afaik包括通过上下文切换处理诸如AVX状态保存之类的事情)以及其他细节,例如中断(Google'Indrupts IDT'(无引号))
请注意,HAL并没有完全位于内核之下,因为内核在某些地方仍然直接与硬件对话,但是HAL还依赖于内核的许多功能(因此它们经常出现在匹配的'集合中) “)
答案 2 :(得分:0)
HAL就像一个隔离层,它意味着图层两侧的东西都可以改变,并且(理论上)它对另一边没有影响。
这意味着各种不同类型的硬件可以低于HAL,并且通过HAL调用的软件无关紧要。