我想知道哪些线程处理设备中断。 当用户模式线程正在运行时发生中断时会发生什么? 当系统正在处理中断时,其他用户线程是否有机会运行?
请build议我一些参考资料,描述如何处理中断窗口。
设备中断本身(通常)是由拥有中断的CPU的任何线程来处理的,但是在一个环0和不同的保护级别上。 这限制了中断处理程序可以执行的一些操作,因为大部分时间当前线程不会与正在等待事件发生的中断正在指示的线程相关。
内核本身是封闭源代码,并且只通过其内部的API进行记录。 该API暴露给设备驱动程序作者,并在驱动程序开发工具包中进行了描述。
一些资源,让你开始:
所罗门和Russinovich任何版本的Microsoft Windows内部 。 目前似乎是第四版,但即使是旧版本也会有所帮助。
Windows DDK现在改名为WDK 。 它的文档也可以在网上找到 。 一定要阅读内核模式设计指南 …
Sysinternals有工具和文章来探讨和解释内核的行为。 这个曾经是一个独立的站点,直到微软厌倦了马克Russinovich似乎知道更多的内核如何工作比他们。 😉
请注意,许多常见设备驱动程序的源代码都包含在示例中的DDK中。 虽然产品版本几乎可以肯定是不同的,但即使您不想自己实现驱动程序,阅读示例驱动程序也可以回答一些问题。
像任何其他操作系统一样,Windows在内核模式下处理中断,并提升中断优先级(我认为他们称之为IRPL,但我不知道“R”代表什么)。 运行在同一台机器上的任何用户线程或低级内核线程在处理中断请求时将被中断,并且在中断处理完成时将被恢复。
为了更多地了解Windows上的设备中断,您需要研究设备驱动程序的开发。 这是一个利基专题,我不认为你可以在网上找到许多有用的资源,你可能不得不寻找一本书或培训课程。
无论如何,Windows使用中断请求级别(IRQL)和延迟过程调用处理中断。 在内核模式下处理中断,该模式的运行优先级高于用户模式。 一个合适的中断处理程序需要很快反应。 它只执行绝对必要的操作,并注册一个延期过程调用以便将来运行。 当系统处于中断请求级别时,会发生这种情况。