A megszakítás egy hardver vagy szoftver által kibocsátott jel, amikor egy folyamat vagy esemény azonnali figyelmet igényel. Figyelmezteti a processzort egy magas prioritású folyamatra, amely az aktuális munkafolyamat megszakítását igényli. Az I/O eszközökben az egyik buszvezérlő vonalat erre a célra különítik el, és Interrupt Service Routine-nak (ISR) nevezik.
Amikor egy eszköz megszakítást kezdeményez mondjuk az i folyamatnál, a processzor először befejezi az i utasítás végrehajtását, majd betölti a programszámlálót (PC) az ISR első utasításának címével. Mielőtt a programszámlálót betöltené a címmel, a megszakított utasítás címe egy ideiglenes helyre kerül. Ezért a megszakítás kezelése után a processzor folytathatja az i+1 folyamatot.
Amíg a processzor kezeli a megszakításokat, tájékoztatnia kell az eszközt, hogy kérését felismerték, hogy az leállítsa a megszakításkérő jel küldését. Emellett a regiszterek mentése, hogy a megszakított folyamat a jövőben visszaállítható legyen, növeli a megszakítás beérkezése és az ISR végrehajtásának megkezdése közötti késleltetést. Ezt hívják megszakítási késleltetésnek.
Hardveres megszakítások:
A hardveres megszakításnál az összes eszköz a megszakításkérő vonalra csatlakozik. Egyetlen kérő vonalat használnak az összes n eszközhöz. A megszakítás kéréséhez egy eszköz bezárja a hozzá tartozó kapcsolót. Amikor egy eszköz megszakítást kér, az INTR értéke az egyes eszközök kéréseinek logikai VAGY-értéke.
Az IRQ kezelésével kapcsolatos események sorozata:
- Az eszközök IRQ-t keltenek.
- A processzor megszakítja az éppen futó programot.
- Az eszköz értesül arról, hogy kérését felismerték, és az eszköz deaktiválja a kérőjelet.
- A kért művelet végrehajtásra kerül.
- A megszakítás engedélyezésre kerül, és a megszakított program folytatódik.
Második eszköz kezelése:
Ha egynél több eszköz ad megszakításkérő jelet, akkor további információkra van szükség annak eldöntéséhez, hogy melyik eszközt kell először figyelembe venni. A következő módszerekkel lehet eldönteni, hogy melyik eszközt válasszuk ki: Polling, Vektoros megszakítások és megszakítások egymásba ágyazása. Ezeket a következőkben ismertetjük.
- Polling:
A polling során az első olyan eszköz, amelynek IRQ bitje be van állítva, az az eszköz, amelyet először kell kiszolgálni. Ennek kiszolgálásához a megfelelő ISR meghívásra kerül. Ez könnyen megvalósítható, de sok időt veszítünk azzal, hogy az összes eszköz IRQ bitjét lekérdezzük. - Vektoros megszakítások:
A vektoros megszakításokban a megszakítást kérő eszköz közvetlenül azonosítja magát, egy speciális kódot küldve a processzornak a buszon keresztül. Ez lehetővé teszi a processzor számára, hogy azonosítsa a megszakítást generáló eszközt. A speciális kód lehet az ISR kezdőcíme vagy az, hogy az ISR hol található a memóriában, és megszakítási vektornak nevezik. - Megszakítások egymásba ágyazása:
Ezzel a módszerrel az I/O eszköz egy prioritási struktúrába van szervezve. Ezért a magasabb prioritású eszközről érkező megszakítási kérés felismerésre kerül, míg az alacsonyabb prioritású eszközről érkező kérés nem. Ennek megvalósításához minden egyes folyamat/eszköz (még a processzor is). A processzor csak a nála nagyobb prioritású eszközök/folyamatok megszakításait fogadja el.
A processzorok prioritása a PS (Process Status register) néhány bitjében van kódolva. Ezt a PS-be író programutasításokkal lehet megváltoztatni. A processzor csak az operációs rendszer rutinjainak végrehajtása közben van felügyelt üzemmódban. Alkalmazási programok végrehajtása előtt felhasználói üzemmódba kapcsol.
Figyelem olvasó! Ne hagyja most abba a tanulást! Szerezze meg az összes fontos CS elméleti fogalmat az SDE interjúkhoz a CS elméleti tanfolyammal diákbarát áron, és váljon ipari készségűvé.