Atliktās procedūras izsaukums (DPC) ir pārtraukšanas apstrādes mehānisms Microsoft Windows operētājsistēmā, uz kuru vadītāji var atsaukties, darbojoties noteiktos procesos. DPC ļauj aktivizēt, bet neizpildīt uzdevumu no ļoti prioritārā pārtraukuma pieprasījuma līmeņa (IRQL). Tas ļauj vadītājam ātri apstrādāt augsta līmeņa pārtraukšanas pakalpojuma rutīnu (ISR), atlikt zemāka līmeņa IRQL kodu izpildi. Draiveri izmanto DPC, lai ieplānotu ievades / izejas (I / O) operācijas. Draiveri ir programmatūra, ko Windows izmanto, lai sazinātos ar aparatūras ierīcēm.
Pārskaitījumi
Kodola režīma ierīces draiveris parasti pārraida audio vai video datu plūsmu no ārējās ierīces vai uz to. Ierīces draiveru datu apstrāde tiek pārtraukta. Ārējā aparatūra regulāri ģenerē pārtraukumus, lai pieprasītu ierīces draiverim pārsūtīt nākamo datu partiju. Ierīces draiveris nevar apstrādāt datus uzreiz pēc pārtraukuma; tādējādi operētājsistēmai ir jāaktivizē atzvanīšanas rutīnas, kas ir DPC. Kodola režīms vai sistēmas režīms un lietotāja režīms ir jūsu centrālās apstrādes ierīces darbības režīmi. Kodols kontrolē visas sistēmas apstrādes darbības.
Plānošana
Atliktās procedūras izsaukuma koncepcija pastāv tikai kodola režīmā. Operētājsistēma saglabā ierīces draiveru plānotos DPC rindā. Ja jūsu sistēmai ir jāpārstrādā pārtraukumi, kodols pārbauda DPC rindu un izpilda pirmo DPC, ja nav pārtraukumu un nedarbojas DPC procesi. DPC ir augstākais prioritārais pavediens sistēmā, jo DPC rindas apstrāde notiek, pirms dispečers izvēlas pavedienu un piešķir to CPU. DPC ir trīs prioritātes līmeņi: zems, vidējs un augsts.
Procesi
Katrs DPC ir saistīts ar vienu sistēmas definētu DPC objektu. Ja draiveris reģistrē DPCForslr rutīnu, sistēma inicializē iepriekš definēto DPC objektu. Ja nepieciešams vairāk nekā viens DPC, draiveris izveido papildu DPC objektus, kas pazīstami kā CustomDPC rutīnas. DPCForlsr rutīnas apstrādā vairākus procesus; tā pabeidz I / O operāciju, ko apraksta ieejas / izejas pieprasījuma paketes (IRP), deques nākamajā IRP, nosaka ievades / izejas statusu saņemtajā IRP un procesu, lai pabeigtu pieprasījumu.
Rutīnas
Parasti ierīču draiverim, kuram ir pārtraukšanas pakalpojuma rutīna, ir vismaz viena DPCForIsr vai CustomDPC rutīna, lai pabeigtu pārtrauktās I / O operāciju apstrādi. Saskaņā ar Open Systems Resources, Inc., galvenais iemesls, kāpēc vadītājam ir viena DPCForlsr rutīna, CustomDPC rutīnu kopums vai abi ir atkarīgi no tās pamatā esošās ierīces rakstura un I / O pieprasījumu kopuma, kas tai jāatbalsta. Vadītāja ISR ir jāzvana IoRequestDPC, lai veiktu pārtrauktām I / O operācijām, izmantojot DPCForlsr rutīnas. Un otrādi, pārklātajām darbībām, pārtrauktām I / O operācijām, izmantojot CustomDPC rutīnas, ISR ir jāzvana KeInsertQueueDPC.