Kas yra atidėto proceso kvietimas?

Turinys:

Anonim

Atidėtojo kvietimo procedūra (DPC) yra „Microsoft Windows“ operacinės sistemos pertraukimo tvarkymo mechanizmas, į kurį vairuotojai gali remtis vykdydami tam tikrus procesus. DPC leidžia užduotį aktyvuoti, tačiau neįvykdyti, iš labai prioriteto nutraukimo užklausų lygio (IRQL). Tai leidžia vairuotojui greitai apdoroti aukšto lygio pertraukimo paslaugą (ISR), atidedant žemesnio lygio IRQL kodus. Vairuotojai naudoja DPC, kad suplanuotų įvesties / išvesties (I / O) operacijas. Vairuotojai yra „Windows“ naudojama programinė įranga, skirta bendrauti su aparatūros įrenginiais.

Pervedimai

Branduolio režimo įrenginio tvarkyklė paprastai tvarko garso ar vaizdo duomenų srauto perdavimą iš išorinio įrenginio arba į jį. Įrenginių tvarkyklių duomenų apdorojimas nutraukiamas. Išorinė aparatinė įranga paprastai generuoja pertrūkius, kad būtų paprašyta įrenginio tvarkyklės perkelti kitą duomenų paketą. Įrenginio tvarkyklė negali iš karto apdoroti duomenų pertraukimo metu; taigi operacinė sistema turi paleisti atgalinį ryšį, kuris yra DPC. Branduolio režimas arba sistemos režimas ir vartotojo režimas yra pagrindinio procesoriaus veikimo režimai. Branduolys kontroliuoja visas sistemos apdorojimo veiklas.

Planavimas

Atidėtos procedūros skambučio sąvoka egzistuoja tik branduolio režimu. Operacinė sistema saugo įrenginių tvarkyklių numatytas DPC eilėje. Jei jūsų sistemai reikia apdoroti pertrūkius, branduolys tikrina DPC eilę ir atlieka pirmąjį DPC, jei nėra pertraukimų ir nevyksta DPC procesai. DPC yra aukščiausias prioritetinis sriegis sistemoje, nes DPC eilių apdorojimas vyksta prieš dispečerį pasirenkant temą ir priskiriant jį procesoriui. DPC turi tris prioritetinius lygius: žemą, vidutinį ir aukštą.

Procesai

Kiekvienas DPC yra susietas su vienu sistemos apibrėžtu DPC objektu. Kai vairuotojas registruoja DPCForslr rutiną, sistema inicijuoja anksčiau apibrėžtą DPC objektą. Jei reikia daugiau nei vieno DPC, vairuotojas sukuria papildomus DPC objektus, žinomus kaip „CustomDPC“. DPCForlsr rutina tvarko kelis procesus; ji užbaigia įvesties / išvesties užklausos paketų (IRP) aprašytą I / O operaciją, deques kitą IRP, nustato įvesties / išvesties būseną gaunamame IRP ir procesą užbaigti užklausą.

Rutinos

Paprastai įrenginio tvarkyklė, turinti pertraukimo tarnybą, turi bent vieną DPCForIsr arba CustomDPC rutiną, kad užbaigtų pertraukiamo I / O operacijų apdorojimą. Pagal Open Systems Resources, Inc., pagrindinė priežastis, dėl kurios vairuotojas turi vieną DPCForlsr rutiną, CustomDPC rutinų rinkinys ar abu priklauso nuo jo pagrindinio įrenginio pobūdžio ir I / O užklausų rinkinio, kurį jis turi palaikyti. Vairuotojo ISR reikia skambinti „IoRequestDPC“, jei norite nutraukti „I / O“ operacijas naudojant DPCForlsr rutinas. Ir atvirkščiai, dėl persidengiančių operacijų, pertraukiamomis I / O operacijomis naudojant „CustomDPC“ procedūras, ISR turi skambinti „KeInsertQueueDPC“.