Què són les trucades de procediments diferits?

Taula de continguts:

Anonim

Una crida al procediment diferit (DPC) és un mecanisme de maneig d'interrupció en el sistema operatiu Microsoft Windows al qual els controladors poden fer referència quan s'executen certs processos. DPC permet activar una tasca, però no executar, des d'un nivell de sol · licitud d'interrupció molt prioritari (IRQL). Això permet que un controlador processi una rutina de servei d'interrupció d'alt nivell (ISR) ràpidament mentre apliqueu l'execució dels codis IRQL de nivell inferior. Els controladors utilitzen els DPC per programar les operacions d'entrada / sortida (E / S). Els controladors són programari utilitzat per Windows per comunicar-se amb dispositius de maquinari.

Traspassos

Un controlador de dispositiu en mode nucli tradicionalment controla la transferència d'una transmissió de dades d'àudio o de vídeo des d'un dispositiu extern. El processament de dades dels controladors del dispositiu està interromput. El maquinari extern genera habitualment interrupcions per demanar al controlador del dispositiu transferir el següent lot de dades. Un controlador de dispositiu no pot processar dades de manera instantània en la rutina d'interrupció; Per tant, el sistema operatiu necessita activar una rutina de devolució de trucada, que és el CPD. El mode del nucli, o el mode del sistema, i el mode d'usuari són els modes de funcionament de la vostra unitat de processament central. El nucli controla totes les activitats de processament del sistema.

Programació

El concepte d'una trucada de procediment diferit només existeix en el mode kernel. El sistema operatiu manté els CPD programats pels controladors del dispositiu en una cua. Si el vostre sistema necessita processar interrupcions, el nucli verifica la cua del DPC i executa el primer DPC si no hi ha interrupcions i no hi ha processos DPC en execució. El CPD és el fil més prioritari del sistema, ja que el processament de la cua DPC es produeix abans que el distribuïdor seleccioni un cadena i l'assigni a la CPU. Els CPD tenen tres nivells de prioritat: baixa, mitjana i alta.

Processos

Cada CPD està enllaçat amb un objecte DPC definit pel sistema. Quan un controlador registra una rutina DPCForslr, el sistema inicialitza l'objecte DPC definit prèviament. Si es requereix més d'un CPD, un controlador crea objectes DPC addicionals coneguts com rutines CustomDPC. La rutina DPCForlsr maneja diversos processos; completa l'operació d'E / S descrita pels paquets de sol·licitud d'entrada / sortida (IRP), determina el proper IRP, estableix l'estat d'entrada / sortida a l'IRP rebut i el procés per completar la sol·licitud.

Rutines

Normalment, un controlador de dispositiu que té una rutina de servei d'interrupció té almenys una rutina DPCForIsr o CustomDPC per completar el processament de les operacions d'E / S interrompudes. Segons Open Systems Resources, Inc., la raó fonamental que un controlador té una única rutina DPCForlsr, un conjunt de rutines CustomDPC o ambdues depèn de la naturalesa del seu dispositiu subjacent i del conjunt de sol·licituds d'E / S que ha de suportar. L'ISR del controlador necessita trucar a IoRequestDPC per a operacions d'E / S interrompudes mitjançant rutines DPCForlsr. A la inversa, per a operacions superposades, les operacions d'E / S basades en interrupcions utilitzant rutines CustomDPC, ISR necessita cridar a KeInsertQueueDPC.