- 1 延迟过程调用
延迟过程调用
编辑延迟过程序调用 (DPC) 是一种 Microsoft Windows 操作系统机制,它允许高优先级任务(例如中断处理程序)推迟所需但低优先级的任务以供以后执行。 这允许设备驱动程序和其他低级事件消费者快速执行其处理的高优先级部分,并安排非关键的附加处理以较低优先级执行。
DPC 由 DPC 对象实现,当设备驱动程序或某些其他内核模式程序发出 DPC 请求时,这些对象由内核创建和初始化。 DPC 请求被添加到 DPC 队列的末尾。 每个处理器都有一个单独的 DPC 队列。 DPC 具有三个优先级:低、中和高。 默认情况下,所有 DPC 都设置为中等优先级。 当 Windows 下降到 Dispatch/DPC 级别的 IRQL 时,它会检查 DPC 队列中是否有任何待处理的 DPC 并执行它们,直到队列为空或发生其他具有更高 IRQL 的中断。
例如,当时钟中断产生时,时钟中断处理程序一般会增加当前线程的计数器来计算该线程的总执行时间,并将其剩余的量子时间减1。当计数器降为零时,线程 必须调用调度程序来选择要在该处理器上执行的下一个线程,并调用调度程序来执行上下文切换。 由于时钟中断发生在高得多的 IRQL 上,因此需要在处理器的 IRQL 下降后执行此线程调度,这是一个不太重要的任务。
因此,时钟中断处理程序请求一个 DPC 对象并将其添加到 DPC 队列的末尾,该队列将在处理器的 IRQL 下降到 DPC/Dispatch 级别时处理调度。
当处理使用中断的流式音频或视频时,DPC 用于在音频流入时处理每个缓冲区中的音频。如果另一个 DPC(来自编写不当的驱动程序)花费的时间太长并且另一个中断生成新的数据缓冲区,则之前 xxx个可以处理,一个drop-out的结果。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/203975/