Kas yra atidėto proceso kvietimai?

Atidėtas procedūrų iškvietimas (DPC) yra „Microsoft Windows“ operacinės sistemos pertraukimų valdymo mechanizmas, į kurį tvarkyklės gali kreiptis vykdydami tam tikrus procesus. DPC leidžia aktyvuoti, bet nevykdyti užduotį iš labai prioritetinio pertraukimo užklausos lygio (IRQL). Tai leidžia vairuotojui greitai apdoroti aukšto lygio pertraukimo paslaugų rutiną (ISR), atidedant žemesnio lygio IRQL kodų vykdymą. Tvarkyklės naudoja DPC planuoti įvesties / išvesties (įvesties / išvesties) operacijas. Tvarkyklės yra programinė įranga, kurią „Windows“ naudoja ryšiui su aparatūros įrenginiais.

Pervedimai

Branduolio režimo įrenginio tvarkyklė paprastai tvarko garso ar vaizdo duomenų srauto perkėlimą iš išorinio įrenginio arba į jį. Įrenginių tvarkyklių duomenys apdorojami pertraukimais. Išorinė aparatinė įranga reguliariai generuoja pertraukas, kad paprašytų įrenginio tvarkyklės perduoti kitą duomenų paketą. Įrenginio tvarkyklė negali iš karto apdoroti duomenų pagal pertraukimo tvarką; taigi operacinė sistema turi suaktyvinti atgalinio skambinimo tvarką, kuri yra DPC. Branduolio arba sistemos režimas ir vartotojo režimas yra jūsų centrinio procesoriaus veikimo režimai. Branduolys kontroliuoja visą sistemos apdorojimo veiklą.

Suplanavimas

Atidėtų procedūrų iškvietimo koncepcija egzistuoja tik branduolio režimu. Operacinė sistema palaiko įrenginio tvarkyklių suplanuotus DPC eilėje. Jei jūsų sistemai reikia apdoroti pertraukimus, branduolys patikrina DPC eilę ir vykdo pirmąjį DPC, jei nėra pertraukimų ir nevykdomų DPC procesų. DPC yra prioritetinė gija sistemoje, nes DPC eilės apdorojimas įvyksta prieš dispečeriui pasirenkant giją ir priskiriant tai procesoriui. DPC turi tris prioritetinius lygius: žemas, vidutinis ir aukštas.

Procesai

Kiekvienas DPC susietas su vienu sistemos apibrėžtu DPC objektu. Kai vairuotojas užregistruoja „DPCForslr“ rutiną, sistema inicijuoja anksčiau apibrėžtą DPC objektą. Jei reikia daugiau nei vieno DPC, tvarkyklė sukuria papildomų DPC objektų, vadinamų „CustomDPC“ rutinomis. „DPCForlsr“ rutina vykdo kelis procesus; jis užbaigia įvesties / išvesties operaciją, aprašytą įvesties / išvesties užklausų paketuose (IRP), pašalina kitą IRP, nustato įvesties / išvesties būseną gautame IRP ir procesą, kaip užbaigti užklausą.

Rutina

Paprastai įrenginio tvarkyklė, turinti pertraukimo tarnybos tvarką, turi bent vieną „DPCForIsr“ arba „CustomDPC“ tvarką, kad užbaigtų pertraukimo valdomas įvesties / išvesties operacijas. Pasak „Open Systems Resources, Inc.“, pagrindinė priežastis, dėl kurios vairuotojas turi vieną „DPCForlsr“ tvarką, „CustomDPC“ rutinos rinkinį arba abu, priklauso nuo jo pagrindinio įrenginio pobūdžio ir įvesties / išvesties užklausų rinkinio, kurį jis turi palaikyti. Vairuotojo ISR turi iškviesti „IoRequestDPC“, jei reikia pertraukimo valdomų I / O operacijų, naudojant „DPCForlsr“ tvarką. Ir atvirkščiai, norint sutapti operacijas, pertraukimo valdomas įvesties / išvesties operacijas naudojant „CustomDPC“ tvarką, ISR turi iškviesti „KeInsertQueueDPC“.