Una llamada a procedimiento diferido ( DPC ) es un mecanismo del sistema operativo Microsoft Windows que permite que las tareas de alta prioridad (por ejemplo, un controlador de interrupciones ) difieran las tareas necesarias pero de menor prioridad para su posterior ejecución. Esto permite que los controladores de dispositivos y otros consumidores de eventos de bajo nivel realicen rápidamente la parte de alta prioridad de su procesamiento y programen un procesamiento adicional no crítico para su ejecución con una prioridad más baja.
Los DPC son implementados por objetos DPC que son creados e inicializados por el kernel cuando un controlador de dispositivo o algún otro programa en modo kernel emite solicitudes DPC. Las solicitudes de DPC se agregan al final de una cola de DPC . Cada procesador tiene una cola DPC independiente. Los CPD tienen tres niveles de prioridad: bajo, medio y alto. De forma predeterminada, todos los DPC se establecen en prioridad media. Cuando Windows cae a un nivel de IRQL de Despacho / DPC, verifica la cola de DPC en busca de DPC pendientes y los ejecuta hasta que la cola esté vacía o se produzca alguna otra interrupción con un IRQL más alto.
Por ejemplo, cuando se genera la interrupción del reloj, el manejador de interrupciones del reloj generalmente incrementa el contador del subproceso actual para calcular el tiempo total de ejecución de ese subproceso, y disminuye su tiempo cuántico restante en 1. Cuando el contador cae a cero, el subproceso El planificador debe invocarse para elegir el siguiente hilo que se ejecutará en ese procesador y el despachador para realizar un cambio de contexto. Dado que la interrupción del reloj ocurre en un IRQL mucho más alto, será deseable realizar este despacho de subprocesos, que es una tarea menos crítica, en un momento posterior, cuando el IRQL del procesador caiga. Entonces, el manejador de interrupciones de reloj solicita un objeto DPC y lo agrega al final de la cola DPC que procesará el envío cuando el IRQL del procesador descienda al nivel DPC / Dispatch.
Cuando se trabaja con transmisión de audio o video que usa interrupciones, los DPC se utilizan para procesar el audio en cada búfer a medida que se transmiten. Si otro DPC (de un controlador mal escrito) tarda demasiado y otra interrupción genera un nuevo búfer de datos, antes el primero se puede procesar, se produce un abandono . [1]
Referencias
- General
- Art Baker y Jerry Lozano. (2000). Libro de controladores de dispositivos de Windows 2000: una guía para programadores, segunda edición, el . Prentice Hall. ISBN 978-0-13-020431-8.
- Microsoft Docs: llamadas a procedimiento diferido (DPC)
- Específico
- ^ Ute Eberhardt (27 de junio de 2012). "Comprobador de latencia DPC" . Thesycon.de . Consultado el 14 de octubre de 2017 .