Un nivel de solicitud de interrupción ( IRQL ) es un medio independiente del hardware con el que Windows prioriza las interrupciones que provienen de los procesadores del sistema . En arquitecturas de procesador en las que se ejecuta Windows, el hardware genera señales que se envían a un controlador de interrupciones . El controlador de interrupciones envía una solicitud de interrupción(o IRQ) a la CPU con un cierto nivel de prioridad, y la CPU establece una máscara que hace que cualquier otra interrupción con una prioridad menor se coloque en un estado pendiente, hasta que la CPU devuelva el control al controlador de interrupciones. Si entra una señal con una prioridad más alta, entonces la interrupción actual se pondrá en un estado pendiente; la CPU establece la máscara de interrupción a la prioridad y coloca cualquier interrupción con una prioridad más baja en un estado pendiente hasta que la CPU termine de manejar la nueva interrupción de mayor prioridad. [1]
Windows asigna no solo los niveles de interrupción de hardware a su tabla de interrupciones interna, sino que también asigna las interrupciones de software. Las asignaciones de esta tabla se denominan Niveles de solicitud de interrupción, o IRQL, y se mantiene un IRQL separado para cada procesador en un sistema multiprocesador. Los valores de IRQL son específicos de las arquitecturas de procesador x86 , IA64 y AMD64 en las que se puede ejecutar Windows, aunque teóricamente pueden admitir otras CPU que utilizan un esquema de interrupción similar (como DEC Alpha y MIPS , que se admitieron brevemente en las primeras versiones de Windows). Lo que esto significa esencialmente es que las APC (llamadas a procedimientos asíncronos), los subprocesos de usuario y las operaciones en modo kernel pueden interrumpirse, y el sistema debe ejecutarlos en un IRQL inferior al programador de subprocesos (o "despachador"). [2]
Ver también
Referencias
- ^ Russinovich, Mark (31 de octubre de 1997), "Inside NT's Interrupt Handling" , Windows IT Pro , Penton Media , archivado desde el original el 13 de septiembre de 2016 , obtenido el 26 de abril de 2016
- ^ Scheduling, Thread Context e IRQL , Microsoft , 26 de abril de 2016, págs. 6–7, archivado desde el original el 22 de octubre de 2016 , consultado el 26 de abril de 2016