Windows上的陷阱调度

时间:2012-01-13 00:45:48

标签: windows interrupt

我实际上正在阅读Windows Internals第5版,我很享受,虽然不是一本易于阅读和理解的书。

我对IRQL和IDT表感到困惑。

我读到Windows使用IRQL实现自定义优先级,而即插即用管理器将IRQ从设备映射到IRQL。

好吧,因此,IRQL用于软件和硬件中断,而异常则用于异常调度处理程序。

当一个设备产生中断时,中断控制器通过IRQ将此信息传递给CPU。

因此Windows采用此IRQ并转换为IRQL以安排何时执行例程(IDT [IRQ_VALUE]指向的例程?

那是怎么回事?

1 个答案:

答案 0 :(得分:1)

是的,处于非常高的水平。

一切都以内核陷阱开始。内核陷阱处理程序处理中断,异常,系统服务调用和虚拟内存寻呼机。

当发生中断时(基于行 - 使用专用引脚或基于消息写入地址),Windows使用IRQL来确定中断的优先级,并使用它来查看在此期间是否可以提供中断。 HAL负责将IRQ转换为IRQL。 然后,它使用IRQ获取IDT的索引,以找到要调用的相应ISR路由。注意,给定的IRQ可以有多个ISR关联。所有这些都按顺序执行。 每个处理器都有自己的IDT,因此您可能同时运行多个ISR。

正如我之前提到的,异常调度也由内核陷阱处理,但它的过程是不同的。它通常首先通过堆栈展开检查任何异常处理程序,然后检查调试器端口等。