Windows驱动开发WDM (6)- 中断请求级别

本文介绍了Windows中的中断请求级别IRQL,详细阐述了软件和硬件中断的区别,以及IRQL的32个等级。重点讲解了在不同IRQL级别下,驱动程序和用户模式代码的运行情况,特别是DISPATCH_LEVEL和PASSIVE_LEVEL。同时,讨论了IRQL与线程调度、线程优先级的关系,并强调了在处理高IRQL时,对分页内存的限制及其重要性。
摘要由CSDN通过智能技术生成

Windows有两种中断请求(IRQ, INTERRUPT REQUEST),一种是外部中断,也就是硬件中断,另外一种是软件中断,比如常用的INT 3下个断点。

现在的x86计算机基本都是用高级可编程控制器(Advanced Programmable Interrupt Controller, 简称APIC)来控制IRQ。正在运行的线程可以随时被中断打断,进入到中断处理程序。优先级高的中断可以打断优先级低的中断处理程序,进入更高级别的中断处理函数。APIC中总共有24个IRQ。

IRQL(INTERRUPT REQUEST LEVEL)

Windows将中断的概念进行了扩展,提出一个中断请求级(IRQL)的概念。其中规定了32个中断请求级别,分别是:

0 - 2级为软件中断

3 - 31级为硬件中断(包括APIC的24个中断)

如图(图片来自于《windows驱动开发技术详解》):

                                     

Windows大部分时间都运行在软件中断级别中,即0-2级别。当有设备中断来临时,windows会将IRQL提升至硬件中断级别(DIRQL, DEVICE INTERRUPT REQUEST LEVEL),并且运行相应的硬件中断处理函数。当硬件中断结束后,恢复到原来的IRQL。

用户模式的代码是运行在最低级别的PASSIVE_LEVEL中&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值