DDK学习---IRQL的理解

初涉DDK,就被弄晕了,学MSDN的时候可以看着API来,因为概念也比较了解,所以不需要怎么来回翻,到了DKK,那么多的概念,看个函数要来回看概念,最后到底看到哪了也不知道了

这两天看了看IRQL,总算是知道怎么回事了,但是深入的么还是不知道的

我的理解是IRQL是内核同步和保证优先任务优先完成的机制,说百了整数0-31,没有什么神秘的,当IRQL为A的例程执行的时候,当前CPU的IRQL线就是A,另一个中断来了它的优先级为B,要是B大于A那么就先执行B,其他情况则不处理,要等A执行完,然后其他处于A的例程执行完,CPU的IRQL线降到B的时候,IRQL为B的例程才能得到执行的机会。

另外一个是,IRQL在DISPATCH_LEAVEL上或以上的例程绝对不要进行任何形式的等待,书上说几乎不,但是我觉得还是绝对不要,因为那样会阻塞系统内核,DISPATCH_LEAVEL是出现的最多的IRQL了;还有就是DISPATCH_LEAVEL上或以上的例程中一定要使用非分页内存,因为页故障的IRQL是PASSIVE_LEAVEL(好象是这样,现在电脑很慢,懒的去翻了,反正就是比DISPATCH_LEAVEL低),那样要是页面异常了,页面故障处理例程是得不到时间运行的

ExAllocXXXX(忘记名字了)可以帮忙分配非分页内存,当然也可以分配分页内存,最好还是使用MDL相关的函数

反正只要记住只有高IRQL的例程能抢先IRQL低的例程,然后就是一个时间点内只有一个例程能运行在CPU上,这样什么同步啊,什么共享数据啊都可以很快的理解了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值