Articulo de referencia

Llamada a procedimiento diferido

Una llamada a procedimiento diferido ( DPC , por sus siglas en inglés) es un mecanismo del sistema operativo Microsoft Windows que permite que las tareas de alta prioridad (por ...

Una llamada a procedimiento diferido ( DPC , por sus siglas en inglés) es un mecanismo del sistema operativo Microsoft Windows que permite que las tareas de alta prioridad (por ejemplo, un controlador de interrupciones ) pospongan la ejecución de tareas necesarias de menor prioridad. 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 el procesamiento adicional no crítico para su ejecución con menor prioridad.

Las DPC se implementan mediante objetos DPC que el kernel crea e inicializa cuando un controlador de dispositivo u otro programa en modo kernel emite solicitudes DPC. Las solicitudes DPC se agregan al final de una cola DPC . Cada procesador tiene una cola DPC independiente. Las DPC tienen tres niveles de prioridad: baja, media y alta. Por defecto, todas las DPC tienen prioridad media. Cuando Windows baja a un nivel IRQL de Dispatch/DPC, comprueba la cola DPC en busca de DPC pendientes y las ejecuta hasta que la cola esté vacía o se produzca alguna otra interrupción con un nivel IRQL superior.

Por ejemplo, cuando se genera la interrupción del reloj, el controlador de la interrupción generalmente incrementa el contador del hilo actual para calcular el tiempo total de ejecución de ese hilo y decrementa su tiempo cuántico restante en 1. Cuando el contador llega a cero, se debe invocar al planificador de hilos para elegir el siguiente hilo que se ejecutará en ese procesador y al despachador para realizar un cambio de contexto. Dado que la interrupción del reloj ocurre en un IRQL mucho más alto, será conveniente realizar esta asignación de hilos, que es una tarea menos crítica, en un momento posterior cuando el IRQL del procesador disminuya. Por lo tanto, el controlador de la interrupción del reloj solicita un objeto DPC y lo agrega al final de la cola DPC, que procesará la asignación cuando el IRQL del procesador descienda al nivel DPC/Dispatch.

Cuando se trabaja con audio o vídeo en streaming que utiliza interrupciones, se emplean DPC para procesar el audio en cada búfer a medida que llega. Si otro DPC (de un controlador mal programado) tarda demasiado y otra interrupción genera un nuevo búfer de datos antes de que se pueda procesar el primero, se produce una pérdida de señal . [ 1 ]

Referencias

General
  • Art Baker y Jerry Lozano. (2000). Windows 2000 Device Driver Book: A Guide for Programmers, Second Edition, The . Prentice Hall. ISBN 978-0-13-020431-8Archivado del original el 15 de abril de 2012. Consultado el 7 de noviembre de 2012 .
  • Documentación de Microsoft: Llamadas a procedimientos diferidos (DPC)
Específico
  1. Ute Eberhardt (27 de junio de 2012). "DPC Latency Checker" . Thesycon.de. Archivado del original el 15 de octubre de 2017. Recuperado el 14 de octubre de 2017 .