Jaké jsou odvolané postupy?

Obsah:

Anonim

Dočasná volání procedur (DPC) je mechanismus rušení přerušení v operačním systému Microsoft Windows, ke kterému mohou řidiči odkazovat při spouštění určitých procesů. DPC umožňuje aktivovat úkoly, ale nevykonávat, z úrovně žádostí o přerušení s vysokou prioritou (IRQL). To umožňuje řidiči rychle zpracovat vysokorychlostní službu přerušení služby (ISR) rychle, zatímco odkládá provádění nižších úrovní IRQL kódů. Ovladače používají DPC pro plánování vstupních / výstupních (I / O) operací. Ovladače jsou software používaný systémem Windows pro komunikaci s hardwarovými zařízeními.

Přenosy

Ovladač zařízení v režimu jádra běžně zpracovává přenos zvukových nebo obrazových datových dat z nebo na externí zařízení. Zpracování dat ovladačů zařízení je přerušeno. Externí hardware rutinně generuje přerušení a požádá ovladač zařízení o přenos další dávky dat. Ovladač zařízení nemůže okamžitě zpracovávat data v rutině přerušení; operační systém tedy musí spouštět rutinu zpětného volání, což je DPC. Režim jádra, systémový režim a uživatelský režim jsou režimy provozu centrální jednotky. Jádro řídí všechny činnosti zpracování systému.

Plánování

Pojem odchozí volání procedury existuje pouze v režimu jádra. Operační systém udržuje DPC naplánované ovladači zařízení ve frontě. Pokud váš systém potřebuje provést přerušení procesu, jádro zkontroluje frontu DPC a provede první DPC, pokud nejsou spuštěny žádné přerušení a žádné procesy DPC. DPC je nejvyšší prioritní podproces v systému, protože zpracování DPC fronty nastane dříve, než dispečer zvolí vlákno a přidělí ho CPU. DPC mají tři úrovně priority: nízké, střední a vysoké.

Procesy

Každý DPC je propojen s jedním systémem definovaným objektem DPC. Když řidič registruje rutinu DPCForslr, systém inicializuje dříve definovaný objekt DPC. Pokud je zapotřebí více DPC, ovladač vytvoří další objekty DPC známé jako rutiny CustomDPC. Rutina DPCForlsr zpracovává několik procesů; dokončí operaci vstupně-výstupní operace popsanou v požadavcích na vstupní a výstupní pakety (IRP), deques další IRP, nastaví vstupní / výstupní stav v přijaté IRP a proces dokončení požadavku.

Rutiny

Normálně má ovladač zařízení, který má rutinní službu přerušení, alespoň jednu rutinu DPCForIsr nebo CustomDPC k dokončení zpracování přerušení řízených I / O operací. Podle Open Systems Resources, Inc. je základní důvod, proč má řidič jednu rutinu DPCForlsr, řadu rutin CustomDPC nebo obojí závisí na povaze svého podkladového zařízení a na souboru požadavků I / O, které musí podporovat. ISR řidiče musí zavolat IoRequestDPC pro operace I / O s přerušením, které používají rutiny DPCForlsr. Naopak, při překrývajících se operacích I / O s využitím přerušení pomocí rutin CustomPC ISR potřebuje volat KeInsertQueueDPC.