IRQL是Interrupt Request Level的缩写,即中断请求级别。是Windows操作系统使用的处理器中断级别。
简介 Windows操作系统运行的处理器架构中,硬件产生信号发给可编程中断控制器. 中断控制器发送中断请求 (IRQ)及相应的优先级给CPU,CPU设置一个掩码(mask)屏蔽低优先级的其他中断请求到挂起状态(pending state),直到CPU释放控制给中断控制器。如果到来的中断有更高优先级,那么当前中断被挂起,CPU处理高优先级的中断。[1]
Windows把硬件中断与软件中断都映射到内部的中断表内。这就是中断请求级别IRQL。多核处理器的每个内核有自己单独的IRQL。异步过程调用、用户态线程、内核模式操作都可以被中断,因此它们的IRQL低于线程调度器(或称分派器)。[2]
级别 在DDK帮助文档中有IRQL的级别:
| IRQL | 宏 | 描述 |
---|
软件IRQL | 0 | PASSIVE_LEVEL | 最低级别, 没有被屏蔽的中断。线程执行用户模式,可以访问分页内存。 |
LOW_LEVEL |
0 | intermediate level | 运行在临界区内的线程。调用KeGetCurrentIrql返回PASSIVE_LEVEL。调用KeAreApcsDisabled来检查是否在临界区内。在本层或更高层的驱动程序不能suspended。 |
1 | APC_LEVEL | 异步调用层。当有异步过程调用APC发生时,处理器提升到APC级别,因而就屏蔽了其它APC。可以访问分页内存。用KeAcquireFastMutex与KeReleaseFastMutex函数调用可以进入/退出本层。 |
2 | DISPATCH_LEVEL | 分发派遣层。DPC和更低的中断被屏蔽,不能访问分页内存,因为缺页中断也是在这个层。线程调度器也在此层,调度时只考虑优先级,因此APC_LEVEL上的线程被阻塞后,可以调度执行PASSIVE_LEVEL线程。 |
硬件IRQL | 3-26 | DIRQL (Device IRQL) | 设备IRQL 几乎所有的中断被屏蔽 |
27 | PROFILE_LEVEL | 使用PRILFILE的定时器 |
28 | CLOCK1_LEVEL | 未在X86使用 |
CLOCK2_LEVEL | 内部定时器2 |
SYNCH_LEVEL | 同步层 |
29 | IPL_LEVEL | 中断内部处理层 |
30 | POWER_LEVEL | 电源故障层 |
31 | HIGH_LEVEL | 最高中断层 |
API 内核函数KeGetCurrentIRQL取得处理器当前的IRQL。
参见参考文献 - ^ Russinovich, Mark, , Windows IT Pro (Penton Media), October 31, 1997 [2016-08-19], (原始内容存档于2016-09-13)
- ^ , Microsoft: 6–7, April 26, 2016 [2016-08-19], (原始内容存档于2016-10-22)
irql, 是interrupt, request, level的缩写, 即中断请求级别, 是windows操作系统使用的处理器中断级别, 目录, 简介, 级别, 参见, 参考文献简介, 编辑windows操作系统运行的处理器架构中, 硬件产生信号发给可编程中断控制器, 英语, programmable, interrupt, controller, 中断控制器发送中断请求, 英语, interrupt, request, architecture, 及相应的优先级给cpu, cpu设置一个掩码, mask, 屏蔽. IRQL是Interrupt Request Level的缩写 即中断请求级别 是Windows操作系统使用的处理器中断级别 目录 1 简介 2 级别 3 API 4 参见 5 参考文献简介 编辑Windows操作系统运行的处理器架构中 硬件产生信号发给可编程中断控制器 英语 Programmable Interrupt Controller 中断控制器发送中断请求 英语 Interrupt request PC architecture IRQ 及相应的优先级给CPU CPU设置一个掩码 mask 屏蔽低优先级的其他中断请求到挂起状态 pending state 直到CPU释放控制给中断控制器 如果到来的中断有更高优先级 那么当前中断被挂起 CPU处理高优先级的中断 1 Windows把硬件中断与软件中断都映射到内部的中断表内 这就是中断请求级别IRQL 多核处理器的每个内核有自己单独的IRQL 异步过程调用 用户态线程 内核模式操作都可以被中断 因此它们的IRQL低于线程调度器 或称分派器 2 级别 编辑在DDK帮助文档中有IRQL的级别 IRQL 宏 描述软件IRQL 0 PASSIVE LEVEL 最低级别 没有被屏蔽的中断 线程执行用户模式 可以访问分页内存 LOW LEVEL0 intermediate level 运行在临界区内的线程 调用KeGetCurrentIrql返回PASSIVE LEVEL 调用KeAreApcsDisabled来检查是否在临界区内 在本层或更高层的驱动程序不能suspended 1 APC LEVEL 异步调用层 当有异步过程调用APC发生时 处理器提升到APC级别 因而就屏蔽了其它APC 可以访问分页内存 用KeAcquireFastMutex与KeReleaseFastMutex函数调用可以进入 退出本层 2 DISPATCH LEVEL 分发派遣层 DPC和更低的中断被屏蔽 不能访问分页内存 因为缺页中断也是在这个层 线程调度器也在此层 调度时只考虑优先级 因此APC LEVEL上的线程被阻塞后 可以调度执行PASSIVE LEVEL线程 硬件IRQL 3 26 DIRQL Device IRQL 设备IRQL 几乎所有的中断被屏蔽27 PROFILE LEVEL 使用PRILFILE的定时器28 CLOCK1 LEVEL 未在X86使用CLOCK2 LEVEL 内部定时器2SYNCH LEVEL 同步层29 IPL LEVEL 中断内部处理层30 POWER LEVEL 电源故障层31 HIGH LEVEL 最高中断层API 编辑内核函数KeGetCurrentIRQL取得处理器当前的IRQL 参见 编辑中断优先级别 英语 Interrupt priority level 中断处理程序 英语 Interrupt handler 参考文献 编辑 Russinovich Mark Inside NT s Interrupt Handling Windows IT Pro Penton Media October 31 1997 2016 08 19 原始内容存档于2016 09 13 Scheduling Thread Context and IRQL Microsoft 6 7 April 26 2016 2016 08 19 原始内容存档于2016 10 22 取自 https zh wikipedia org w index php title IRQL amp oldid 67863257, 维基百科,wiki,书籍,书籍,图书馆,
文章
,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。