Kaj so klici za odloženi postopek?

Klic odloženega postopka (DPC) je mehanizem za obdelavo prekinitev v operacijskem sistemu Microsoft Windows, na katerega se lahko gonilniki sklicujejo med izvajanjem določenih procesov. DPC omogoča, da se naloga aktivira, vendar ne izvede, z zelo prednostne ravni zahtev za prekinitev (IRQL). To vozniku omogoča hitro obdelavo rutine prekinitvene storitve (ISR) na visoki ravni, hkrati pa odloži izvajanje kod IRQL nižje stopnje. Gonilniki uporabljajo DPC-je za načrtovanje vhodno-izhodnih (I / O) operacij. Gonilniki so programska oprema, ki jo Windows uporablja za komunikacijo s strojnimi napravami.

Prenosi

Gonilnik naprave v načinu jedra običajno obravnava prenos zvočnega ali video podatkovnega toka iz ali v zunanjo napravo. Obdelava podatkov gonilnikov naprav temelji na prekinitvah. Zunanja strojna oprema rutinsko generira prekinitve, da od gonilnika naprave zahteva prenos naslednje serije podatkov. Gonilnik naprave ne more takoj obdelati podatkov v svoji prekinitveni rutini; tako mora operacijski sistem sprožiti rutino povratnega klica, to je DPC. Način jedra ali sistemski način in uporabniški način sta načina delovanja vaše centralne procesorske enote. Jedro nadzoruje vse dejavnosti obdelave sistema.

Načrtovanje

Koncept odloženega klica postopka obstaja samo v načinu jedra. Operacijski sistem ohrani DPC-je, ki jih načrtujejo gonilniki naprav, v čakalni vrsti. Če mora vaš sistem obdelati prekinitve, jedro preveri čakalno vrsto DPC in izvede prvi DPC, če ni prekinitev in se ne izvajajo procesi DPC. DPC je nit z najvišjo prednostjo v sistemu, saj se obdela čakalna vrsta DPC, preden dispečer izbere nit in jo dodeli CPU. DPC imajo tri prednostne stopnje: nizko, srednjo in visoko.

Procesi

Vsak DPC je povezan z enim sistemsko definiranim objektom DPC. Ko gonilnik registrira podprogram DPCForslr, sistem inicializira prej definirani objekt DPC. Če potrebujete več DPC, gonilnik ustvari dodatne DPC predmete, znane kot CustomDPC rutine. Rutina DPCForlsr obravnava več procesov; dokonča V / I operacijo, opisano z vhodno / izhodnimi paketi zahtev (IRP), dekodira naslednjo IRP, nastavi vhodno / izhodno stanje v prejetem IRP in postopek za dokončanje zahteve.

Rutine

Običajno ima gonilnik naprave, ki ima rutino storitve prekinitev, vsaj eno rutino DPCForIsr ali CustomDPC za dokončanje obdelave V / I operacij, ki jih vodijo prekinitve. Po navedbah Open Systems Resources, Inc. je temeljni razlog, da ima voznik eno samo rutino DPCForlsr, nabor rutin CustomDPC ali oboje, odvisno od narave osnovne naprave in nabora I / O zahtev, ki jih mora podpirati. Voznikov ISR mora poklicati IoRequestDPC za V / I operacije s prekinitvami, ki uporabljajo rutine DPCForlsr. Nasprotno pa mora ISR pri prekrivajočih se operacijah, ki temeljijo na prekinitvah V / I operacij z uporabo rutin CustomDPC, poklicati KeInsertQueueDPC.