Uso compartido de recursos del procesador durante el inicio desde un estado de Low-Power
Cuando un equipo se inicia desde un estado de espera o hibernación (inicio intermedio), los controladores deben evitar el uso de recursos de procesador durante más tiempo de lo necesario. Lo más importante es que las rutinas de llamada a procedimiento diferido (DPC) y el código que se ejecuta en IRQL >= DISPATCH_LEVEL deben mantener sus tiempos de ejecución en un mínimo. Los controladores usan rutinas DPC para ayudar a inicializar dispositivos. Es posible que los controladores necesiten ejecutar código de inicialización en DISPATCH_LEVEL como parte de un contrato de interfaz de puerto-miniport.
Mientras se ejecuta una rutina DPC, se bloquea la ejecución de otros subprocesos de prioridad inferior en el mismo procesador. Además, otras rutinas de DPC que están en cola y listas para ejecutarse podrían bloquearse hasta que finalice el DPC actual. Para permitir que otros subprocesos se ejecuten oportunamente, se debe ejecutar una rutina de DPC típica para no más de 100 microsegundos.
Una rutina DPC que se ejecuta durante demasiado tiempo durante el inicio del sistema puede retrasar la inicialización de otros dispositivos. Este retraso hace que la fase de inicialización del dispositivo sea más larga y retrasa la finalización del inicio por parte del sistema operativo.
Use los procedimientos recomendados siguientes para diseñar las rutinas de DPC:
Una sola rutina DPC no debe ejecutarse para más de 100 microsegundos.
Las rutinas DPC que llaman a la rutina KeStallExecutionProcessor para retrasar la ejecución no deben especificar retrasos de más de 100 microsegundos.
Si una tarea requiere más de 100 microsegundos y se ejecuta en DISPATCH_LEVEL, la rutina DPC debe finalizar después de 100 microsegundos y programar una o varias rutinas de temporizador de DPC para completar la tarea más adelante.
Use las herramientas de análisis de rendimiento que se documentan en WDK para evaluar los tiempos de ejecución de rutinas DPC.