Levels szoftver megszakítás kérések (IRQL)

Bár a megszakítás-vezérlő állítja a prioritás a megszakítás, a Windows telepíti saját megszakítási prioritási rendszer néven ismert megszakítás kérés szint (IRQL). A nucleus IRQL-szintet képviselik, mint a számok 0-31 x86 rendszerek és a számok formájában 0-15 x64 rendszerek és IA64, ahol a nagyobb számok a megszakítás magasabb prioritású.

Bár a kernel határozza szoftver megszakítja IRQL beállított standard szintű, HAL hardver szakítsa kijelzők szám IRQL-es szinten. Az ábrán a IRQL-szinteket az x86 architektúra, amint az az alábbi ábrán IRQL-szintek x64 architektúrák és IA64.

Szintje megszakításkérelmeket (IRQL) x86 architektúra

Szintje megszakításkérelmeket (IRQL) x64 és IA64 architektúrák.

Megszakítások kiszolgált fontossági sorrendben, és a megszakítás magasabb prioritású kap az az előnye a szolgáltatás. Abban az esetben, ha a magas szintű programmegszakítás a processzor tárolja az állam a megszakított menet és elindítja a megszakítás-vezérlő társított egy csapda. Ez viszont felveti IRQL okoz ISR.

Az eljárás végrehajtása után a megszakítás-vezérlő csökkenti IRQL szintű processzor az értékeket, amelyeken ez volt a megszakítás előtt, majd töltse be a mentett a gép állapotától.

Megszakított menet folytatja a végrehajtást a ponton, ahol abbamaradt. Amikor a kernel csökkenti a IRQL, képes felismerni az megszakítását alacsonyabb prioritási szintet, amely eddig el volt rejtve. Ha ez megtörténik, a rendszermag megismétli a folyamatot, amelynek feldolgozása új megszakítások.

IRQL prioritási szint van egy teljesen más jelentése, mint a prioritások használt tervezése folyik. Prioritás ütemezés áramlási attribútumot és egy attribútum IRQL megszakítási forrás, például billentyűzet vagy egér. Ezen kívül minden processzor a IRQL beállítást, amely megváltoztatja a teljesítménye az operációs rendszer kódját.

Telepítése IRQL minden processzor határozza meg, mely megszakítja a processzor képes fogadni. IRQL-szint is használják hozzáférés szinkronizálása kernel módú adatszerkezet. Amint elkezdődött magmódban áramlás, növeli vagy csökkenti a IRQL processzor akár közvetlenül hívja KeRaiseIrql KeLowerIrql és funkciókat. vagy gyakrabban, közvetetten Függvényhívások ezt a kérelmet a kernel használt tárgyak szinkronizálást. Amint az ábrán látható, egy megszakítás érkező a forrás IRQL, nagyobb, mint a jelenlegi szinten, a processzor megszakítás, és megszakítja származó forrásokból IRQL-szintek egyenlő vagy kisebb a jelenlegi szinten, elfedi mindaddig, amíg a végrehajtó szálat nem kisebb IRQL.

Mivel a hivatkozás PIC egy viszonylag lassú folyamat, HAL-mechanizmusokat igénylő hozzáférést a busz IO változtatni IRQL-szintet (pl PIC 32 bites fejlett vezérlő interfész rendszerek Configuration and Power - Advanced Configuration and Power Interface, ACPI) végrehajtja a teljesítmény optimalizálása, amely az úgynevezett „lusta IRQL» (lusta IRQL) és elkerüli utalásokat a PIC.

A növekvő IRQL HAL megjegyzi új IRQL megváltoztatása nélkül a megszakítás maszk. Ha azt követően, hogy egy megszakítás egy alacsonyabb szinten, a HAL-készletek megszakítja maszk beállításokkal megfelel az első megszakítás, és megszakítja lefagy alacsonyabb szinten (tartása tehát függő állapotban), amíg a IRQL nem kell pontozni.

Így, ha a megszakítás egy alacsonyabb növekedése IRQL történik, PIC HAL módosított mechanizmusokra van szükség.

Megjegyzés. Kivételek a szabály blokkoló megszakítások vagy egyenlő egy alacsonyabb szintű növekvő aggodalom IRQL APC-szintű megszakítások. Ha az áramlás növekszik az APC IRQL szintet, majd annak végrehajtása alá átütemezése miatt feladó / DPC-szintű megszakítások, a rendszer továbbítja az APC-szintet újra tervezett megszakadásának az áramlás. Így APC szinteket lehet tekinteni IRQL, a helyi áramlás, nem az egész processzor.

magmódban áramlás növeli vagy csökkenti IRQL a processzor, amelyen fut, attól függően, hogy mit akar csinálni. Például, amikor egy megszakítás bekövetkezik, a processzor csapdák (vagy esetleg a processzor) processzor megnöveli IRQL hogy IRQL, beállítva a megszakítási forrás. Ez a növekedés maszkok minden megszakítja azonos és alsó IRQL (csak a processzor), biztosítva, hogy a processzor szolgálja a megszakítás, megszakítást nem készített azonos vagy alacsonyabb szinten.

Álarcos szakítja vagy kezeli másik processzor, vagy tapad, amíg IRQL esik. Ezért minden rendszer összetevőit, beleértve a kernel és eszközmeghajtók, próbáljuk a IRQL a passzív szint (nevezik alacsony szint). Ez úgy történik, azonnal reagálni eszközmeghajtók hardver megszakítások, feltéve, hogy IRQL nem tartják szükségtelenül magas huzamosabb ideig.

Debugger mentett IRQL processzorokhoz 0x0 - 0 (LOW_LEVEL)

Vegye figyelembe, hogy az érték a IRQL tárolják két helyen. Az első helyen, amely bemutatja a jelenlegi IRQL, - egy régióban vezérlő processzor (processzor-vezérlő régió, PCR), és a második - annak kiterjesztését, vezérlőegység CPU domént (processorregioncontrolblock, PRCB), amely tartalmaz egy tárolt IRQL DebuggerSaveIrql területen. PCR és PRCB információt tartalmaznak az állam minden egyes processzor a rendszer, beleértve a IRQL jelenlegi, egy mutatót a hardver IDT-asztal, tájékoztatás az áram és a következő, úgy dönt, hogy futtassa a patak.

Kernel és HAL használja ezt az információt, hogy végezzen célzó intézkedések egyedi építészeti és egyedi gép. Részei a PCR és PRCB struktúrák nyíltan Ntddk.h a fejlécben megadott fájlokat kapcsolódó eszközök Windows Driver Kit (WDK).

KPCR Processor 0 at fffff80001bfad00:

Major Minor 1 1