8

我想知道哪些线程处理设备中断。当用户模式线程运行时出现中断时会发生什么?当系统处理中断时,其他用户线程是否也有机会运行?

请向我推荐一些描述窗口如何处理中断的参考资料。

4

3 回答 3

3

设备中断本身(通常)由任何具有 CPU 接受中断的线程处理,但在环 0 中并处于不同的保护级别。这限制了中断处理程序可以采取的一些操作,因为大多数时候当前线程与等待中断指示的事件发生的线程无关。

内核本身是封闭源代码,仅通过其内部 API 记录。该 API 向设备驱动程序作者公开,并在驱动程序开发工具包中进行了描述。

一些帮助您入门的资源:

  • Solomon 和 Russinovich的任何版本的Microsoft Windows Internals。当前似乎是第 4 版,但即使是旧版也会有所帮助。

  • Windows DDK,现在更名为WDK。它的文档也可以在线获得。请务必阅读内核模式设计指南...

  • Sysinternals有工具和文章来探究和解释内核的行为。这曾经是一个独立的站点,直到微软厌倦了 Mark Russinovich 似乎比他们更了解内核的工作原理。;-)

请注意,许多常见设备驱动程序的源代码都包含在示例中的 DDK 中。尽管生产版本几乎可以肯定不同,但即使您不想自己实现驱动程序,阅读示例驱动程序也可以回答一些问题。

于 2009-04-03T06:55:02.450 回答
1

像任何其他操作系统一样,Windows 在内核模式下处理中断,具有更高的中断优先级(我认为他们称它们为 IRPL,但我不知道“R”代表什么)。任何运行在同一台机器上的用户线程或更低级别的Kernel线程都会在处理中断请求时被中断,并在ineterrupt处理完成后恢复。

于 2009-04-03T06:11:16.220 回答
0

为了更多地了解 Windows 上的设备中断,您需要学习设备驱动程序开发。这是一个小众话题,我认为您在网络上找不到很多有用的资源,您可能需要寻找书籍或培训课程。

无论如何,Windows 使用中断请求级别 (IRQL) 和延迟过程调用来处理中断。中断在内核模式下处理,它以比用户模式更高的优先级运行。适当的中断处理程序需要非常快速地做出反应。它只执行绝对必要的操作并注册一个延迟过程调用以在将来运行。这将在系统处于中断请求级别时发生。

于 2009-04-03T06:34:01.750 回答