1,IRQLs(Interrupt Request Levels)
IRQLs is used to synchronize kernel mode activity.In windows NT,higher priority activities or events interrupt those activities or events running at low priorities.The relative priority of an activity within the windows NT is defined by its Interrupt Request Level(IRQL).NT uses a set of mnemonics to define IRQL values.the lowerest priority level is PASSIVE_LEVEL(digital 0)and the bigest priority is HIGH_LEVEL(digital 32).All user thread take place at IRQL PASSIVE_LEVEL .
IRQLs are best thought of as interrupt priorites but they are not scheduling priorites.Most executive-level routines in windows NT strive to keep the IRQL as low as possible(PASSIVE_LEVEL).APC LEVEL(digital 1)is used by kernel mode routines to control re-entrancy when processing asynchronous procedure calls(APCs).The APC is requested by generating a software interrupt at IRQL APC_LEVEL.IRQL DISPATCH_LEVEL is used within windows NT for two different activites.one is processing deferred procedure calls and another is running the dispatcher.The windowsNT dispatcher receives requests to perform a reschedule operation at IRQL DISPATCH_LEVEL.
2,Deferred Procedure Calls
DPCs are callbacks to routines to be run at IRQL DISPATCH_LEVEL.DPCs are typically requested from higher IRQLs to allow more extended,non-time-critical,processing to take place. A request to execute a particular DPC routine is made by placing the DPC object that describes that describes that DPC routine into the DPC Queue of a given CPU,and then requesting an IRQL DISPATCH_LEVEL software interrupt.the DPC queue is serviced by the microkernel,each time the DPC queue is serviced,all entries on the DPC queue for the current processor are processed