我想知道哪些线程处理设备中断。当用户模式线程运行时出现中断时会发生什么?当系统处理中断时,其他用户线程也有机会运行吗?
请告诉我一些描述如何处理窗口中断的参考资料。
答案 0 :(得分:3)
设备中断本身(通常)由处理中断的CPU的任何线程处理,但是在环0和不同的保护级别。这限制了中断处理程序可以采取的一些操作,因为大多数情况下当前线程与等待中断指示的事件发生的线程无关。
内核本身是封闭源代码,只能通过其内部API进行记录。该API向设备驱动程序作者公开,并在驱动程序开发工具包中进行了描述。
一些可以帮助您入门的资源:
所罗门和鲁西诺维奇的Microsoft Windows Internals任何版本。目前似乎是第4版,但即使是旧版本也会有所帮助。
Windows DDK,现在已重命名为WDK。它的文档也是available online。请务必阅读Kernel Mode Design Guide ...
Sysinternals有工具和文章来探测和解释内核的行为。这曾经是一个独立的网站,直到微软厌倦了Mark Russinovich,似乎对内核的工作方式有了比他们更多的了解。 ; - )
请注意,许多常见设备驱动程序的源代码都包含在示例中的DDK中。虽然生产版本几乎肯定不同,但即使您不想自己实现驱动程序,阅读示例驱动程序也可以回答一些问题。
答案 1 :(得分:1)
与任何其他操作系统一样,Windows在内核模式下处理中断,具有提升的中断优先级(我认为它们称之为IRPL,但我不知道“R”代表什么)。在处理中断请求时,同一台机器上运行的任何用户线程或低级内核线程都将被中断,并且在中断处理完成时将恢复。
答案 2 :(得分:0)
要了解有关Windows上设备中断的更多信息,您需要学习设备驱动程序开发。这是一个利基主题,我不认为你可以在网上找到许多有用的资源,你可能不得不寻找一本书或一个培训课程。
无论如何,Windows处理具有中断请求级别(IRQL)和Deferred procedure calls的中断。在内核模式下处理中断,其运行优先级高于用户模式。适当的中断处理程序需要非常快速地做出反应它仅执行绝对必要的操作并注册延迟过程调用以便将来运行。当系统处于中断请求级别时,就会发生这种情况。