Windows 自旋锁分析(一)
来源:互联网 发布:学软件开发去哪里 编辑:程序博客网 时间:2024/06/08 14:55
自旋锁是一种在内核定义,只能在内核态下使用的同步机制。自旋锁用来保护共享数据或者资源,使得并发执行的程序或者在高优先级IRQL的对称多处理器的程序能够正确访问这些数据。分析Windows自旋锁,首先需要介绍Windows的IRQL。
1 Interrupt Request Level(IRQL)介绍
IRQL是Interrupt RequestLevel,中断请求级别。一个由windows虚拟出来的概念,划分在windows下中断的优先级,这里中断包括了硬中断和软中断,硬中断是由硬件产生,而软中断则是完全虚拟出来的。处理器在一个IRQL上执行线程代码。IRQL是帮助决定线程如何被中断的。在同一处理器上,线程只能被更高级别IRQL的线程能中断。每个处理器都有自己的中断。IRQL在Windows下IRQL有如下值:
名称
PASSIVE_LEVEL
LOW_LEVEL
APC_LEVEL
DISPATCH_LEVEL
PROFILE_LEVEL
CLOCK1_LEVEL
CLOCK2_LEVEL
SYNCH_LEVEL