Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár
Megszakítási rendszer Dr. Seebauer Márta főiskolai tanár
[email protected]
Megszakítási rendszer A CPU-nak rugalmasan reagálnia kell bizonyos, a rajta futó program és a hozzá kapcsolódó eszközök által generált eseményekre. Erre a célra szolgál a számítógép megszakítási rendszere. rendszere A megszakítás bekövetkezésekor az éppen futó CPU-n futó programról vezérlés ideiglenesen átadódik egy program A megszakítást másik program számára, amely kiszolgálja a kezelő program Megszakítás helye bekövetkezett eseményt. Ez vezérlés-átadó jel segítségével történik, amely a megszakítás konkrét okától függően meghatározza a szükséges rutin kezdőcímét, és hardver úton tárolja • a megszakított programnak a megszakítás pillanatában fennálló legfontosabb állapotjellemzőit és regisztereinek tartalmát (együtt: kontextus), hogy azok később, a megszakított program folytatásakor visszaállíthatók legyenek • beállítódnak a megszakító rutin induló állapotjellemzői és regisztertartalmai • a megszakító rutin végén megtörténik a vezérlés visszaadása a megszakított programra, az utasításszámláló új tartalma a megszakított program végrehajtásra következő utasításának címe lesz.
A megszakítások okai vagy forrásai 1. Megszakítások - a program végrehajtásával nem közvetlen összefüggésben álló okok miatti állapotok – Géphibák az automatikus hibafigyelő áramkörök jelzései alapján • paritás-ellenőrzés útján feltárt adatátviteli vonalak, CPU regiszterek vagy az operatív memória hibái • az energia-ellátás és hűtő rendszer zavarai – I/O források - a periféria eszközök - megszakítás-kérő jelzései • az I/O tevékenységek befejeződésekor vagy üzenetközlést kezdeményező perifériák bevezető állapotjelzései – Külső források - a külső eszközök által generált megszakító jelek • reset-gomb benyomása • összekapcsolt gépek esetén a másik gép jelzése.
A megszakítások okai vagy forrásai 2. Kivételek - a futó program utasítás-végrehajtása vagy végrehajtásának megkísérlése következményeként a CPU-n kialakult állapotok. – Memóriakezelés • lapváltási igény • memóriavédelem megsértése egy időben több, egymástól független feladat programok adatainak védelme • tényleges tárkapacitás túlcímzése • címzési előírások megsértése ugróutasítás páratlan címre, bájthatárok megsértése • veremtúlcsordulás – Aritmetikai-logikai műveleteknél • integer és a lebegőpontos számok túl/alulcsordulása • nullával osztás kísérlete • definiálatlan műveleti kód – Nem létező I/O eszköz indítása
A megszakítások csoportosítása 1. Szinkron - aszinkron megszakítások – Azon megszakítások, amelyek a programnak ugyanazon adatokkal való végrehajtása során mindig ugyanott lépnek fel, szinkron megszakításoknak nevezzük. Ilyen például az integer túlcsordulás. – Az aszinkron események viszont véletlenszerűen következnek be. Például az I/O egység kérte megszakítások, a hardver-hibák.
Az utasítások végrehajtása között, illetve közben fellépő megszakítások – Az utasítások végrehajtása között fellépő megszakítások az éppen végrehajtott utasítás eredményeképpen következnek be (például, túlcsordulás, page fault, tárvédelmi hiba). A kezelése rögtön az utasítás végrehajtása után elindulhat, és a programfutás eredményessége aztán a kezelés eredményétől függ; – Az utasítások végrehajtása közben fellépő megszakítások valamely utasítás végrehajtása alatt (tehát nem az utasítás-végrehajtási ciklussal szinkronban) merülnek fel. Ilyenek, például, a hardver-megszakítások. Ekkor az esetek többségében először befejezésre kerül az éppen végrehajtás alatt álló utasítás, és csak utána kezdődik meg a megszakítás kiszolgálása.
A megszakítások csoportosítása 2. A felhasználó által explicit kért és nem kért megszakítások – A felhasználó által explicit kért megszakítás, például, az operációs rendszer szolgáltatásának meghívása, a nyomkövetés vagy az utasítás töréspont. – A felhasználó által nem kért megszakítás, például, az integer túlcsordulás, az I/O egység megszakítás, a hardver hiba.
A megszakított program folytatódik vagy befejeződik – A megszakított program folytatódik, például, I/O egység igénye alapján történő megszakítás, operációs rendszer szolgáltatásának meghívása esetén. – A megszakított program futása befejeződik hardver hiba esetén.
Felhasználó által maszkolható vagy nem maszkolható megszakítások – A felhasználó által maszkolható, például, a nyomkövetés, a töréspont. – Nem maszkolható viszont az I/O egység megszakítási kérése, az operációs rendszer szolgáltatásának meghívása.
A megszakítás kiszolgálásának általános folyamata 1. A megszakítás előkészítése – valamilyen egység megszakítási kérést bocsát ki, azaz aktiválja az INTR vezérlővonalat – a megszakítás beérkezésekor a CPU az éppen folyó utasítást még végrehajtja – minden utasítás-töréspontban a vezérlőegység megvizsgálja, hogy van-e megszakítás. Észleli, hogy van megszakítás. Az INTACK vezérlővonal aktiválásával jelzi a megszakítási kérés elfogadását, mire a megszakítást kérő deaktiválja az INTR vonalat;
A megszakítás kiszolgálásának általános folyamata 2. A megszakítás kiszolgálásának a hardver által végzett feladatai – a CPU elkezdi annak az előkészítését, hogy az eddig futó program helyett a megszakítást kiszolgálását végző programot kezdhesse végrehajtani. Ennek során a programtól általában függetlenül (tehát hardver úton) egy erre a célra kijelölt memória-tartományba, a veremtárolóba kimenti azokat az állapot-információkat (a PC és az állapotregiszterek tartalma), amelyek a megszakított programnak a megszakítás bekövetkezése utáni folytatásához szükségesek. – a CPU betölti a megszakítást feldolgozó program első utasításának címét a PC-be, továbbá esetleg (nem minden architektúra esetén) be kell töltenie a megszakítást kiszolgáló program futásához szükséges állapotinformációkat. Szintén architektúra-függően a megszakítást kérő program lehet egyetlen program az összes megszakítás feldolgozására, lehet egyegy önálló program minden egyes megszakítás-típushoz.
A megszakítás kiszolgálásának általános folyamata 3. A megszakítás kiszolgálásának a szoftver által végzett feladatai – a megszakítást feldolgozó program első utasításai a megszakított program regiszter-tartalmak mentését végzik, szintén a veremtárolóba. – amennyiben egyetlen megszakítás-kiszolgáló program van, vagy egy megszakítás-típushoz több egység is tartozik, először beazonosítja a megszakítás-kérő egységet. – a megszakítás tényleges kiszolgálása. Ennek során például I/O megszakítás esetén beolvassa a megszakítást kérő I/O port adatregiszterének tartalmát, esetleg további parancsokat küldhet az I/O egység számára, és azok végrehajtását is ellenőrizheti az I/O egység státuszregiszterének újabb beolvasásával – a megszakítás kiszolgálásának befejeződése után (amennyiben a megszakítás nem okozott rendszer-leállítást) gondoskodni kell arról, hogy egy programmal visszaírjuk a megfelelő regiszterekbe a megszakítási veremtárolóból a megszakított program folytatásához szükséges adatokat, majd ezután megkezdődhet a megszakított program következő utasításának végrehajtása.
Megszakítás észlelése és nyilvántartása A megszakítást a hardvertől függően – a megszakítási vezérlővonal feszültségszintje (szintérzékeny bemenetű hardver) vagy – a jel valamely éle (élérzékeny bemenetű hardver) váltja ki.
Minden egyes forráshoz tartozik egy jelző flipflop, amelyeket a forrásokban keletkezett megszakítás-kérések állítanak egybe. Ezek összességét nevezzük megszakítási jelző (flag) regiszternek. regiszternek Gyakran előfordul, hogy a jelző-regisztert alkotó flip-flopok nem a CPU-ban, hanem magukban a forrásokban találhatók. Mivel egy rendszerben több megszakítást kérő eszköz is lehet, ezért először azonosítani kell magát a megszakítást kérő eszközt. A megszakítást kérő eszköz azonosítása Lekérdezéses (polling) – hardver úton (hardware polling vagy daisy chain) – szoftver úton (software polling);
Vektoros (vectored) lehetővé teszi, hogy a megszakítást kérő egység azonosítsa magát, ami kiküszöböli az időrabló lekérdezést. A nevét onnan kapta, hogy a megszakítás-kérésen kívül egy megszakítási vektornak nevezett bitsorozatot is átküld. A megszakítási vektor tartalma architektúránként változó: – a megszakítást kérő egység a megszakítási vonal aktiválásán kívül a sínen elküldi egy azonosítóját, ami általában a kiszolgálását jelentő szervíz program kezdőcíme – a megszakítást kérő egység a megszakítási vonal aktiválásán kívül a sínen elküld egy megszakítási csoport-azonosítót, azonosítót ezután valamilyen sorrendben el kell kezdeni az adott csoportba tartozó egyes egységek lekérdezését.
A megszakítások engedélyezése és tiltása (maszkolás) Programozható engedélyezés és tiltás A CPU utasítás-készletében általában van olyan utasítás, amely lehetővé teszi a megszakítás-kérések tiltását, azaz maszkolását. Az ilyen utasításokkal a programozó valóban kikapcsolhatja az egyes megszakítás-kérési vonalakat, melyek eredményeképpen a CPU bizonyos megszakításokat nem vesz figyelembe. Például, a lebegőpontos alulcsordulást maszkolhatjuk. Sok periféria státuszregiszterében van egy interrupt enable flag, melynek állása határozza meg, hogy a megszakítását a CPU elfogadja-e vagy sem. Nem maszkolható megszakítás A mai mikroprocesszorok többsége rendelkezik egy non-maskable interrupt request (NMI) vonallal. A nem maszkolható kifejezés azt jelenti, hogy ezt nem lehet kikapcsolni. Egy NMI azonnal kiszolgálandó. NMI-hez általában a rendszerszinten kritikus hibákat szokták kapcsolni, például, a RAM paritáshibát vagy a tápellátás hibája. Mikor ez bekövetkezik, a számítógép még néhány másodpercig működőképes, mivel minden tápegységben van egy pici energiatároló kapacitás. Az NMI azonnali kiszolgálása révén a számítógép normál módon lekapcsolódik, tehát a számítógép újraindítása könnyen lehetséges.
A prioritások kezelése Egyszerre több forrás is kérhet kiszolgálást, ezért a megszakítás forrásának azonosítása után a rendszernek el kell tudni dönteni a megszakítás-kérés kiszolgálásának sorrendjét. Prioritások nélküli rendszer A megszakításokat beérkezésük sorrendjében kerülnek kiszolgálásra. Nagy hátránya, hogy az időérzékeny megszakítások kiszolgálása így megkéshet, és ezért esetleg adatvesztés következhet be. Prioritásos megszakítási rendszer A prioritásos megszakítási rendszer esetén egy prioritási sorrendet rendelünk az egyes forrásokhoz.
Prioritási csoportok A védelmi rendszer megsértése és hardver hibák Ezeknek van a legmagasabb prioritásuk. Csak akkor van értelme tovább folytatni az összes többi munkát, ha ezek lekezelése azt lehetővé teszi. Kritikus időzítés Amikor az adatátviteli vonalakon jön egy üzenet, és egy karakter-alapú kommunikációs illesztő kéri a megszakítást, akkor rövid idő alatt ki kell szolgálni a megszakítást, mert különben az adat elvész. Teljesítmény – egy bizonyos felhasználónak valamilyen okból magasabb a prioritása, amiből az következik, hogy az általa üzemeltetett folyamatoknak magasabb prioritást kell biztosítani – valamely programnak rendkívül magasak az erőforrás-igényei (például, az operatív tár igénye), és ezért a multiprogramozás kevésbé hatékony. Ekkor a nagy erőforrásigényű folyamatnak adnak jóval nagyobb prioritást, hogy rövidebb ideig okozzon hatékonysági problémát.
A prioritás eldöntésének algoritmusa A prioritás eldöntésének algoritmusa általában programozható. Fix prioritás A megszakítási források prioritása időben állandó, a megszakítást kérő egységekhez véglegesen hozzá van rendelve. Hátránya, hogy amennyiben egy magas prioritású forrás gyakran kér megszakítást, akkor az elnyomja az alacsonyabb prioritásúakat. Körbeforgó prioritás (rotating) Bizonyos megvalósításoknál több eszköz rendelkezik azonos prioritási szinttel. Ekkor a csoporton belül a legutoljára kiszolgált megszakítási forrás kerül a prioritási sor végére. Ennek hátránya, hogy sürgős kérés esetén esetleg túl későn kerül kiszolgálásra. Speciális maszk Ez lehetővé teszi a processzor számára, hogy bizonyos egységektől érkező megszakítási jelzéseket letiltson.
Szoftver lekérdezéses (software polling) megszakítási rendszer Egy program, általában az operációs rendszer megadott időközönként megvizsgálja a megszakítás szempontjából releváns eszközök állapotjelzőjét. A megszakítást kérő eszköz számára elindítja az adott eszközhöz tartozó kiszolgáló programot Amikor a szoftver-lekérdezéses módszert alkalmazzuk, akkor a prioritást a lekérdezési sorrenddel határozzuk meg.
Hardver lekérdezéses (hardware polling vagy daisy chain) megszakítási rendszer A daisy chain esetén a processzortól megszakítást igénylő valamennyi egységet sorban felfűzünk úgy, hogy a legmagasabb prioritású lesz az első helyen, a következő egység pedig eggyel alacsonyabb prioritással fog rendelkezni. Amennyiben bármelyik egység megszakítási igénnyel rendelkezik, akkor aktiválja az INTR vezérlővonalat. Erre válaszképpen a processzor aktiválja az INTACK vezérlővonalat. Azon egység, melynek nincsen megszakítási igénye, átengedi magán az aktivált INTACK vonalat. Viszont amelyik egységnek függő megszakítási igénye van, az deaktiválja az INTACK vonalat, és így blokkolja az INTACK jelzést és felrakja az adatsínre a megszakítási vektorát. A módszer hátránya, hogy az INTACK jel sorosan, azaz lassan terjed az egységek között. Data Bus INTACK
CPU
U1
U2
U3
Un INTR
Prioritási csoportok szervezése INTACK
INTACK1
U1
U2 INTR1
Prioritásos arbitrálási áramkör
CPU
INTACKn
U1
U2 INTRn
INTR
Prioritási csoportok szervezését az architektúrák többsége biztosítja, például a PDP11, a Motorola 68000 család és az Intel 8259A megszakítás vezérlő.
Párhuzamos kiszolgálású (independent requesting) megszakítási rendszer A megszakító program címe
Data Bus
INTACK
U1 Prioritásos arbitrálási áramkör
CPU
INTR1
U2 INTACK1
Un INTACK2
INTACKn
INTR2
INTRn
INTR
A fenti séma szerint párhuzamosan érkezhetnek a megszakítási kérések az egyes egységektől. Ekkor a CPU egyszerűen csak a legmagasabb prioritásút fogadja. A megfelelő vonal meghatározza a kiszolgáló program kezdőcímét is. Amennyiben egy megszakítási vonalon több egység osztozik, akkor pedig valamilyen más eljárást kell alkalmazni a csoporton belüli legmagasabb prioritású egység kiválasztására.
Vektoros megszakítás A megszakítási rendszerek legáltalánosabban használt módszere. A megszakítást kérő eszköz a kiszolgáló program kezdőcímét meghatározza a megszakítás-vezérlő és a processzor számára. A megszakítást kérő eszköz – – – –
a kiszolgáló programot meghívó utasítást küldi a processzornak a kiszolgáló programot meghívó utasítás címét küldi a processzornak a kiszolgáló program kezdőcímét küldi a processzornak sorszámot küld a processzornak, amely a megszakítási vektortáblában az adott eszközt jelenti. Ehhez a sorszámhoz rendelték a táblázatban kiszolgáló program kezdőcímét. – a vektortábla a processzorban található autovector interrupt
Gyakran a hardver megszakítási vonalak fixen össze vannak kapcsolva a megszakítási vektortábla meghatározott bejegyzéseivel, így a hardver és szoftver eredetű megszakítási kérelmek azonos módon kezelhetőek.
A megszakítási rendszerek szintek szerint Egyszintű megszakítási rendszerek Az egyszintű megszakítási rendszer esetén egyetlen megszakítási szint van, tehát, ha egy megszakítás létrejön, újabb megszakításra nincs mód mindaddig, amíg vissza nem térünk a normál állapotba. – vagy két program-állapot regisztert találunk a CPU-ban (egyet a normál és egyet a megszakítási állapot számára); – vagy pedig a régi program-állapot szó tárolására és az új elővételére bármely forrás esetén ugyanaz a főtárrekesz-pár van kijelölve.
Többszintű megszakítási rendszerek minden egyes forráshoz – külön megszakítási szint és – vagy saját programállapot-regiszter tartozik, – vagy külön rekesz-pár az operatív memóriában az Old PSW és a New PSW tárolására.
Egyszintű megszakítási rendszerek 2
Megszakítási szint
1
3
Normál processzor-állapot Engedélyezett megszakításkérések
1 2
t
3
Tételezzük fel, hogy mindössze három megszakítási forrásunk van. A legmagasabb prioritású forrást jelöljük 1-el, a prioritási sorban második forrást 2-sel és a legalacsonyabb prioritásút 3-al.
Többszintű megszakítási rendszerek 1
Legmagasabb prioritású megszakítási szint 2
Közbenső prioritású megszakítási szint
3
Legalacsonyabb prioritású megszakítási szint Normál processzor-állapot Engedélyezett megszakításkérések
2
1 2
t
3
Ezzel az algoritmussal a CPU az összes, az aktuálisnál magasabb prioritás-szintű engedélyezett megszakítás-kérésre szinte azonnal reagál, és a legmagasabb prioritásszintű kérés feldolgozását kezdi meg elsőnek. Egy megszakítás-kérés feldolgozása után a megszakító rutin "Load PSW" utasítással mindig annak a szintnek adja vissza a vezérlést, ahonnan kapta. Így a megszakításkérések egymás utáni feldolgozása is fontossági sorrendjükben következik be. Mivel egy megszakításkor az új PSW-vel egy új maszk-szó is aktiválódik - a további megszakítások engedélyezése szempontjából - már az új maszk-szó az érvényes.
Többszintű megszakítási rendszerek 1
Többszintű megszakításrendszerben a kiválasztó logika működésének egy másik lehetséges 2 algoritmusa a következő: 2 2-es megszakítási szint – a kiválasztó logika keresi a pillanatnyi CPUszintnél magasabb prioritási szintű engedélyezett megszakítás-kéréseket. 3 3-as megszakítási szint – ha talál ilyeneket, kiválasztja közülük a legmagasabb prioritási szintűt, és megszakítást hajt végre erre a szintre. Normál processzor-állapot – a megszakított program állapotjellemzői a 1 t főtárnak a megszakított szinthez tartozó 2 Engedélyezett kijelölt területén tárolódnak, majd az új megszakításkérések 3 szinthez tartozó, szintén kijelölt területről új állapotjellemzők töltődnek be. Még egy fontos különbség az első változathoz képest: az elfogadott kérés jelző flip-flopja csak az őt feldolgozó megszakító program végén törlődik egy speciális deaktiváló utasítás hatására. Elindul tehát az új szint megszakító programja, és addig fut, míg vagy nálánál is magasabb szintű engedélyezett kérés be nem érkezik, vagy a megszakítás feldolgozása be nem fejeződik. Ekkor a deaktiváló utasítás hatására törlődik a feldolgozott kérés jelző flip-flopja, és ismét működésbe lép a kiválasztó logika. Megkeresi a jelző flip-flopok és az aktív maszkszó alapján a legmagasabb prioritásszintű engedélyezett kérést (ez a szint most biztosan alacsonyabb a jelenleginél), és a már leírt módon "megszakítást" hajt végre a kiválasztott szintekre. Hogy ezzel az algoritmussal az alapállapotban futó program is visszakaphassa a vezérlést, az alapállapotot a legalacsonyabb megszakítási szintnek tekintik, amelynek állandóan, nem-törölhetően és nem maszkolhatóan fennáll a megszakításkérése. Az ismertetett elv szerint működött a Videoton R-10 számítógép megszakítási rendszere. 1-es megszakítási szint
Többszintű megszakítási rendszerek 1/c
1-es megszakítási szint 2/b
2-es megszakítási szint
2/b 2/a
3/a 3/b
3-as megszakítási szint
Normál processzor-állapot Engedélyezett megszakításkérések
1/c
2/a
2/b 3/a 3/b
Esetenként a megszakítási források száma száznál több is lehet. Ha minden forráshoz külön szintet rendelünk, az nagyon megdrágíthatja a gépet. Ezért gyakran csak a megszakítási források egy-egy osztályához rendelünk külön szinteket. Lényegében ilyen az IBM 360-as gépcsalád és az ESZR gépek megszakítási rendszere. Ennek hátránya lehet, hogy ha valamelyik osztály szintjén egy megszakítás feldolgozása folyik, akkor egy ugyanazon osztályba tartozó, de feldolgozás alatt állónál magasabb prioritású megszakítás-kérés várakozni kényszerül.
Az alprogram-hívás és a megszakítás közötti különbség Egy számítógépes program futása alapvetően szekvenciális. Amennyiben a program futása során ettől el kívánunk térni, vezérlésátadó vagy alprogramhívási utasításokat használunk. Megjelenési formáját tekintve a megszakítások leginkább az alprogram-híváshoz hasonlíthatóak:
Alprogram
Megszakítás
az őt hívó főprogram számára végez valamilyen tevékenységet
a megszakított program és a megszakítást feldolgozó program teljesen független egymástól
hívása a program alapján előre látható
tipikusan véletlenszerű
teljes egészében szoftvert jelent
kiszolgálásában jelentős szerepet vállal a hardver is
A sínfoglalás és a megszakítások közötti különbség 1.
A sínfoglalás és a megszakítások megvalósítása ugyanazon háromféle módszerrel történik: Soros – Hardver lekérdezése (daisy chain) – Szoftver lekérdezéses (software polling)
Párhuzamos – Párhuzamos kiszolgálású megszakítási rendszer (independent requesting)
Ez önmagában is félreértésekre adhat okot. Ezen túlmenően mindkettő szorosan kapcsolódik a perifériák kiszolgálásához, hiszen pont a megszakításos I/O az elterjedt. – Két teljesen különböző célú dologról van szó. Sínfoglalásnál a megosztott sín használati jogáért küzdenek az egyes egységek, míg megszakításnál a processzort kérik, hogy az ő problémájukat kiszolgáló programot, utasításokat futtassa le, mégpedig soron kívül. – Más a kéréseket adó egységek köre. Sínfoglalásnál csak a kommunikáló perifériák, processzor és memória jöhet számításba, míg a megszakítást okozó egységek száma bővebb, itt már megjelenik az aritmetikai egység, a tápegység, stb. – Két, különböző hardver valósítja meg őket. A sínfoglalást a sínvezérlő fogja össze és a BUS BUSY, BUS REQUEST valamint az egy vagy több BUS GRANT vezérlővonal vesz részt benne. A megszakítást viszont a megszakítás-vezérlő irányítja az INTR valamint az INTACK vezérlővonal részvételével.
A sínfoglalás és a megszakítások közötti különbség 2. Egy periféria megszakítással jelzi az átviteli igényét a processzor felé. Annak érdekében, hogy azonosítsa magát a legelterjedtebb vektoros átvitel esetén általában el kell kérnie a sínhasználati jogot a sínvezérlőtől, és azon el kell küldenie a processzor számára a vektorát, mely tartalmazhatja az azonosítóját, vagy a kiszolgálási rutinjának címét, esetleg a kiszolgálási rutin futásához szükséges egyéb állapotadatokat. Miután a processzor megtudta, hogy ki is kérte a megszakítást, akkor processzor a megszakítás feldolgozása során beolvassa az adott periféria állapotregiszterét, melyből látja, hogy az adott egység megszakítását kiszolgáló programnak melyik alprogramját kell futtatnia. Amennyiben viszont az adott egység állapotregiszterében a READY bit be van állítva, akkor az átvitel szervezését végző alprogram fog futni. Magának az átvitelnek a szervezését már inkább az egység végzi, mint a processzor. Az egység kéri a az átvitelhez szükséges sínhasználatot a sínvezérlőtől, s amikor azt megkapja, az egység lép fel az adó (vagy master) szerepében.
Intel 8259A megszakítási vezérlő Az első PC-k Az Intel processzoroknak mindössze 2 db megszakítási vonaluk van – –
NMI (Non Maskable Interrupt), amihez csatlakoztatták, például memória paritás:hiba, tápellátási hiba megszakításait INT vonalon pedig osztozik az összes többi megszakítás.
Annak érdekében, hogy megnövelje a megszakítási rendszer lehetőségeit, az IBM 1981ben kiválasztotta az Intel 8259A jelzésű megszakítás-vezérlőt, ami napjainkig is szabványos. Ez 8 db megszakítást képes kiszolgálni, mégpedig 8 prioritási szinten. Az IRQ0-tól IRQ7-ig sorszámozott megszakítások esetén az IRQ0 prioritása a legmagasabb, az IRQ7-é pedig a legalacsonyabb. Az IBM PC AT Az AT megjelenésekor a 8 prioritási szint már kevésnek bizonyult, ezért az IBM 2 db 8259A vezérlő kaszkádba kötése mellett döntött. A hozzáadott vezérlő kimenetét rákapcsolták a már meglévő vezérlő IRQ2-jéhez. A meglévő vezérlő kimenete az egyetlen megszakítási vezérlővonalon keresztül pedig csatlakozik a CPU-hoz. A kaszkádosítás eredményeképpen 2x8-1=15 megszakítást lehet kezelni.
A megszakítások kiosztása Mind a 8, mind pedig a 15 megszakításos esetre az IBM adott egy hozzárendelési táblát, hogy mely egységet mely megszakításhoz kell kötni. A mai modern PC-k és operációs rendszerek világában a Plug and Play szabvány mellett a következő megszakítások hozzárendelése kötött. A maszkolható megszakítások közül a legmagasabb prioritást a Timernek kell adni, hogy az órajelet minden körülmények között biztosítsa. Mivel személyi számítógépről van szó, célszerű azonnal reagálnia a billentyűzetleütésre, ezért rendelték a második legmagasabb prioritási szinthez a billentyűzetet.
A megszakítás száma
Funkció
IRQ0
Timer output0
IRQ1
Billentyűzet
IRQ2
Kaszkád
IRQ8
Reai Time Clock
IRQ9
Video, hálózati adapter
IRQ13
Lebegőpontos processzor
Tehát 10 db megszakítással szabadon gazdálkodhatunk, a lényeg csupán, hogy mind a hardver egység, mind pedig a megszakítást kezelő szoftver (azaz a hardver egység meghajtó szoftvere) tudja, hányas számú megszakítást választottuk ki.
A megszakítások megosztása A 15 megszakítási lehetőség nem elegendő, ezért már az ISA sín esetén lehetővé tették a megszakítások megosztását. Amikor megosztanak egy megszakítást, akkor minden, az adott megszakítást használó egység ugyanazt a megszakítást használja, hogy jelezze a mikroprocesszor számára a megszakítási igényét. Ezután vagy a megszakítást kiszolgáló szoftver vagy az eszköz irányítja a mikroprocesszort, hogy a csoportból a megszakítást ténylegesen kérő egység igényét szolgálja ki. PCI-sín A PCI megváltoztatja a megszakítási struktúrát, és saját megszakítási vezérlést épít be a PCI bridge-be. A PCI rendszernek négy megszakítási vezérlővonala van, melyek mindegyike egy-egy bővítő sínt szolgálhat ki. A PCI koncepció szerint az ISA bővítő sín csak a PCI bridge-n keresztül kommunikálhat a mikroprocesszorral. A PCI tervezői kialakítottak egy úgynevezett sorosított megszakítás-támogató rendszert (Serialized IRQ Support for PCI Systems), mely egy úgynevezett IRQSER jelen alapul. Ebben egymás után jelölik, hogy mely megszakításhoz tartozik és melyikhez nem tartozik megszakításkérés. Ezt az információt eljuttatja a mikroprocesszor chip set-jében lévő hagyományos Intel 8259A jelzésű megszakítás-vezérlőhöz, vagy annak funkcionális megfelelőjéhez. A vezérlőt elérve a megszakítások kezelése már hagyományos módon történik.