DPC 延迟过程调用

本文详细介绍了DPC(延迟过程调用)的概念、用途,以及在Windows系统中的执行流程。DPC主要用于减少高IRQL硬件中断处理时间,以提高系统对其他中断的响应速度。DPC队列在整个系统中是全局的,并在硬件中断结束后执行,确保线程不被切换。文章还讨论了DPC的插入、执行和调度机制。
摘要由CSDN通过智能技术生成

作者: JIURL
邮箱: thejiurl@gmail.com
主页: http://jiurl.blogsome.com/
      http://jiurl.yeah.net/

$ 前言

这篇文章应该写于 2005年4月13日,是写给自己备忘的研究文档,本来是根本没有打算放出来的。

$ DPC

deferred procedure call (DPC) 延迟过程调用

dpc 主要是为了减少处于高 IRQL 的硬件中断处理的时间。
由于低 IRQL 的硬件中断不能中断 高 IRQL 的硬件中断处理。
而可能有些硬件的中断处理代码量比较大,花的时间比较多,会造成其他硬件中断的响应会等的时间比较长。
很有可能就是因为 时钟中断处理,非常非常频繁,代码量也比较多,可能会比较大的影响到其他硬件中断的响应,至于硬件中断响应比较慢可能会对不同的硬件造成什么结果,有待研究。

$ DPC 队列

整个系统只有一个 DPC 队列,至少对单cpu的系统是如此,对于多cpu系统有可能是一个cpu一个,有待验证。

这个队列是个 LIST_ENTRY 链表。

链表头在 pcr 的 +800 struct _LIST_ENTRY DpcListHead。
链的深度在 pcr 的 +808 uint32 DpcQueueDepth。

所有的 dpc 都链在这个链上。

链上的每项是个 KDPC 结构。

struc

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值