“中断挂钩”是什么意思?

cad*_*luk 5 x86 operating-system terminology interrupt

我正在阅读PnP BIOS 规范并偶然发现以下段落:

主动监控 INT 19h 引导向量

当前的系统 BIOS 架构允许选项 ROM 不加选择地挂钩 INT 19h。通过主动监控 INT 19h 的控制,系统 BIOS 可以重新获得对引导过程的控制,以确保从正确的设备以正确的方式加载操作系统。

在第 3 行,提到了“挂钩”中断的可能性。据我所知,这意味着监视中断的发出,例如在每个 ISR 中调用一个特殊的通知函数,让操作系统跟踪触发的中断。那是对的吗?
这是什么意思?

use*_*557 4

当在实模式下触发中断时,CPU 将执行转移到该中断的处理程序,该处理程序在中断向量表中指定。

在这种情况下挂钩中断意味着更改中断向19h量表中条目的地址以指向他们选择的另一个地址。然后,当中断19h被触发时,它将从该地址开始执行自己的例程,这也可能19h在返回之前将控制权转移回原始中断处理程序。

假设中断处理程序位于 RAM 中,另一种挂钩方法是在中断处理程序中放置一个内联挂钩19h。也就是说,可以单独保留中断处理程序的地址,但将处理程序中的指令之一替换为自己的例程的jmp( 或)。call目前还不清楚他们是否也监控这种类型的挂钩。


编辑:浏览完文档后,似乎第一种挂钩方式就是他们所说的。

...如果系统 BIOS 已知 IPL 设备,则确保中断 19h 仍由系统 BIOS 控制。如果没有,重新捕获中断 19h 并保存向量...

...如果操作系统加载失败并且先前的 ISA 选项 ROM 控制了中断 19h 向量,则将中断 19h 向量恢复到 ISA 选项 ROM并重新执行中断 19h 引导加载程序...

因此,基本上在启动过程的特定部分,他们会检查选项 ROM 是否修改了中断处理程序19h。如果被修改,他们会保存新处理程序的地址(他们可以选择稍后运行)并将原始处理程序放回到 IVT 中。