2012-01-13 83 views
0

我實際上在閱讀Windows Internals第5版,我很享受,雖然不是一本容易閱讀和理解的書。在Windows上調度陷阱

我對IRQLs和IDT表感到困惑。

我讀到Windows使用IRQL實現自定義優先級,即插即用管理器將IRQ從設備映射到IRQL。

好的,所以,IRQL用於軟件和硬件中斷,異常用於異常調度處理程序。

當一個設備產生一箇中斷時,中斷控制器將這些信息通過IRQ傳遞給CPU。

所以Windows藉此IRQ和轉化爲IRQL安排何時執行例程(例程IDT [IRQ_VALUE]指向?

是不是發生了什麼?

回答

1

是的,很。高水平

一切始於一個內核陷阱內核陷阱處理程序處理中斷,異常,系統服務調用和虛擬內存分頁

當中斷髮生基於(線 - 。使用專用的針或基於消息的寫入地址)窗口使用IRQL來確定中斷的優先級並使用它來查看在該時間期間中斷是否可以被服務。 HAL完成了將IRQ轉換爲IRQL的工作。然後它使用IRQ獲取IDT的索引以找到要調用的相應ISR路由。請注意,可以爲給定的IRQ關聯多個ISR。它們都按順序執行。 每個處理器都有自己的IDT,因此您可能有多個ISR同時運行。

正如我前面提到的那樣,異常分派也由內核陷阱處理,但是它的過程是不同的。它通常通過檢查堆棧展開來檢查任何異常處理程序,然後檢查調試程序端口等。