DPC-----Defered Procedure Call 延迟调用例程

DPC例程:分发(或者叫调度)或延迟调用例程
DPC例程,望文生义下下,运行在DISPATH_LEVEL上 = =
延迟例程调用(differed procedure call)
1:系统的线程调度运行在DISPATCH_LEVEL上,每当一个线程时间片用完,而此时线程未完成其任务,系统将插入一个DISPATCH_LEVEL的中断请求调用线程调度器,但是它将等到当前线程完成某些任务直到其中断级降至DISPATCH_LEVEL以下,调度器才会运行。如果线程是主动结束或者等待,那么调度器将直接运行并切换线程
2:对内核共享数据的访问,应该将当前线程提升至DISPATCH_LEVEL,此时任何软中断,包括线程时间片用完时系统插入的DISPATCH_LEVEL级别的线程调度中断,都将被屏蔽,直到对数据操作完,降低IRQL,其他软中断才会得以处理……这样就保证了数据在可以完整的被读写
B:延迟例程调用(deferred procedure call)
1:延迟例程是完成某一项不是特别紧要的任务的函数
2:延迟例程以对象表示
3:每个CPU都有一个延迟例程队列
4:系统将在DISPATCH_LEVEL上处理延迟例程,即是,当前线程所在的CPU中断级即将从DISPATCH_LEVEL降下来,系统将保持此时的CPU中断级为DISPATCH_LEVEL,然后一个个调用DPC对象,直到DPC列为空时。另外,当满足任一一种抽空条件时,系统会执行抽空动作,若此时CPU中断级小于DISPATCH_LEVEL,系统将直接处理DPC队列并提升至DISPATCH_LEVEL……当抽空动作完成后,系统恢复原有的中断级,继续原有的任务(注意:因为DPC是在DISPATCH_LEVEL上被处理,所以延迟例程中,不能调用)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值