Što su odgođeni poziv?

Sadržaj:

Anonim

Poziv s odgodom postupka (DPC) je mehanizam za upravljanje prekidima u operacijskom sustavu Microsoft Windows na koji se vozači mogu pozivati ​​pri izvođenju određenih procesa. DPC dopušta da se zadatak aktivira, ali se ne izvršava, s visoko prioritetne razine zahtjeva za prekidom (IRQL). To dopušta vozaču da brzo obradi rutinu servisiranja prekida visoke razine (ISR) dok odgađa izvršavanje IRQL kodova niže razine. Vozači upotrebljavaju DPC-ove za planiranje ulaza / izlaza (I / O) operacija. Upravljački programi su softver koji Windows koristi za komunikaciju s hardverskim uređajima.

prijenosi

Upravljački uređaj moda jezgre konvencionalno obrađuje prijenos audio ili video toka podataka iz ili na vanjski uređaj. Obrada podataka upravljačkih programa uređaja je prekinuta. Vanjski hardver rutinski generira prekide kako bi zatražio od upravljačkog programa prijenos sljedećeg skupa podataka. Pogonski program uređaja ne može odmah obraditi podatke u svojoj prekinutoj rutini; stoga, operativni sustav treba pokrenuti rutinu povratnog poziva, koja je DPC. Načini rada kernela ili način rada sustava i korisnički način rada su načini rada vaše središnje procesne jedinice. Kernel kontrolira sve aktivnosti procesiranja sustava.

Zakazivanje

Koncept poziva s odgođenom procedurom postoji samo u načinu kernela. Operativni sustav čuva DPC-ove koje redovi upravljački programi zakazuju u redu čekanja. Ako vaš sustav treba obraditi prekide, kernel provjerava DPC red i izvršava prvi DPC ako nema prekida i nema pokrenutih DPC procesa. DPC je najviši prioritetni niz u sustavu, budući da se obrada DPC reda događa prije nego što otpremnik odabere nit i dodijeli je CPU-u. DPC-i imaju tri razine prioriteta: niska, srednja i visoka.

procesi

Svaki DPC je povezan s jednim sistemski definiranim DPC objektom. Kada upravljački program registrira DPCForslr rutinu, sustav inicijalizira prethodno definirani DPC objekt. Ako je potrebno više od jednog DPC-a, upravljački program stvara dodatne DPC objekte poznate kao CustomDPC rutine. DPCForlsr rutina obrađuje nekoliko procesa; dovršava I / O operaciju koju opisuju ulazno / izlazni paketi zahtjeva (IRP), deques sljedeći IRP, postavlja ulazno / izlazni status u primljenom IRP-u i proces za dovršenje zahtjeva.

rutine

Normalno, upravljački program uređaja koji ima rutinu servisiranja prekida ima najmanje jednu DPCForIsr ili CustomDPC rutinu za dovršetak obrade I / O operacija upravljanih prekidima. Prema Open Systems Resources, Inc., osnovni razlog zašto upravljački program ima jednu DPCForlsr rutinu, skup CustomDPC rutina ili oba ovisi o prirodi njegovog temeljnog uređaja i skupa I / O zahtjeva koje mora podržavati. ISR upravljačkog programa mora pozvati IoRequestDPC za I / O operacije upravljane prekidima pomoću DPCForlsr rutina. Nasuprot tome, za preklapajuće operacije, I / O operacije upravljane prekidima pomoću CustomDPC rutina, ISR treba nazvati KeInsertQueueDPC.