DPC

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 6 martie 2016; verificările necesită 11 modificări .

DPC ( eng.  Deferred procedure call  -delayed procedure call ) - un mecanism specific pentru apelarea procedurilor în arhitectura Windows .

Esența DPC

Când are loc o întrerupere, controlul este transferat operatorului de întrerupere . Există o serie de factori care limitează capacitățile codului de gestionare a întreruperilor:

Soluția la această problemă este o abordare în care doar cele mai critice operațiuni sunt efectuate direct în handler, iar alte acțiuni sunt amânate până când apare timpul relativ liber al procesorului și IRQL scade la o valoare validă ( DISPATCH_LEVEL). Apoi aceste acțiuni vor fi efectuate ca parte a apelului la procedura amânată (execuția acesteia a fost amânată până în acest moment).

Spre deosebire de un apel de procedură normală, în care, de fapt, controlul este transferat imediat în codul procedurii apelate, cu un apel DPC, controlul nu este transferat către procedura apelată - în schimb, se plasează adresa procedurii apelate și parametrii. într-o coadă specială [1] numită DPC Queue . Când vine momentul „oportun”, procedura amânată este chemată pe bune.

Astfel, operatorul de întrerupere efectuează doar cele mai necesare acțiuni și efectuează un apel de procedură întârziat care va efectua toate celelalte acțiuni care sunt necesare ca parte a gestionării întreruperilor, dar nu necesită o urgență crescută.

Management DPC

Deoarece mecanismul DPC este utilizat în primul rând în cadrul procesării cererilor I/O, există funcții speciale de wrapper cu prefix Iopentru gestionarea apelurilor amânate. În special, manipulatorii de întreruperi, conform documentației, ar trebui să utilizeze aceste funcții.

Note

  1. În sistemele multiprocesor, fiecare procesor are propria sa coadă de apeluri în așteptare. Deci, fiecare apel în așteptare este asociat cu un anumit procesor.

Vezi și

Literatură