Mi a halasztott eljárás?

Tartalomjegyzék:

Anonim

A halasztott eljáráshívás (DPC) egy megszakításkezelő mechanizmus a Microsoft Windows operációs rendszerben, amelyhez az illesztőprogramok bizonyos folyamatok futtatásakor hivatkozhatnak. A DPC lehetővé teszi, hogy egy feladatot aktiváljanak, de nem hajtsanak végre egy nagy prioritású megszakítási kérelem szinttől (IRQL). Ez lehetővé teszi, hogy a vezető gyorsan feldolgozza a magas szintű megszakítási szolgáltatás rutint (ISR), miközben elhalasztja az alacsonyabb szintű IRQL kódok végrehajtását. A meghajtók DPC-ket használnak a bemeneti / kimeneti (I / O) műveletek ütemezésére. Az illesztőprogramok a Windows által a hardvereszközökkel való kommunikációhoz használt szoftver.

Átigazolások

A kernel módú eszközmeghajtó hagyományosan kezeli az audio- vagy videoadatfolyam adatátvitelét külső eszközről vagy egy külső eszközről. Az eszközvezérlők adatfeldolgozása megszakításos. A külső hardver rutinszerűen megszakításokat generál, hogy az eszköz-illesztőprogramot kérje a következő adatcsomag átadására. Egy eszközmeghajtó nem tudja feldolgozni az adatokat azonnal a megszakítás rutinjában; így az operációs rendszernek visszahívási rutint kell indítania, amely a DPC. A rendszermag vagy a rendszermód és a felhasználói mód a központi feldolgozó egység működési módja. A rendszermag vezérli az összes rendszerfeldolgozási tevékenységet.

ütemezése

A halasztott eljáráshívás fogalma csak kernel módban létezik. Az operációs rendszer a készülékvezérlők által tervezett DPC-ket sorban tartja. Ha a rendszernek meg kell dolgoznia a megszakításokat, a rendszermag ellenőrzi a DPC-várólistát, és végrehajtja az első DPC-t, ha nincsenek megszakítások és nincsenek DPC-folyamatok. A DPC a legmagasabb prioritású szál a rendszerben, mivel a DPC-sorok feldolgozása megtörténik, mielőtt a diszpécser kiválaszt egy szálat, és hozzárendeli ezt a CPU-hoz. A DPC-k három prioritási szinttel rendelkeznek: alacsony, közepes és magas.

Eljárások

Minden DPC egy rendszer által definiált DPC objektumhoz kapcsolódik. Amikor egy illesztőprogram regisztrál egy DPCForslr rutint, a rendszer inicializálja a korábban definiált DPC objektumot. Ha egynél több DPC szükséges, akkor az illesztőprogram további DPC objektumokat hoz létre, amelyeket CustomDPC rutinoknak neveznek. A DPCForlsr rutin több folyamatot is kezel; befejezi a bemeneti / kimeneti kérési csomagok (IRP) által leírt I / O műveletet, deques a következő IRP-t, beállítja a bevitt / kimeneti állapotot a fogadott IRP-ben és a folyamatot a kérés befejezéséhez.

rutinok

Általában egy megszakítási szolgáltatás rutinnal rendelkező eszközillesztőnek legalább egy DPCForIsr vagy CustomDPC rutinja van, hogy befejezze a megszakítás-vezérelt I / O műveletek feldolgozását. Az Open Systems Resources, Inc. szerint az egyik fő ok, amiért a járművezető egyetlen DPCForlsr rutinnal rendelkezik, az egyediDPC rutinok halmaza vagy mindkettő függ az alapul szolgáló eszköz jellegétől és az I / O kéréseknek, amelyeket támogatnia kell. A vezető ISR-nek meg kell hívnia az IoRequestDPC-t a megszakításos vezérlésű I / O műveletekhez a DPCForlsr rutinok használatával. Ezzel ellentétben az átfedésben lévő műveletekhez, az egyéni megszakítás-vezérlésű I / O műveletekhez az CustomDPC rutinokat használva, az ISR-nek a KeInsertQueueDPC-t kell hívnia.