Megszakítási rendszer

Hasonló dokumentumok
Architektúra, megszakítási rendszerek

A megszakítási rendszer

Az interrupt Benesóczky Zoltán 2004

Bevezetés a számítástechnikába

OPERÁCIÓS RENDSZEREK. Elmélet

Az operációs rendszer szerkezete, szolgáltatásai

Mikrorendszerek tervezése

Számítógép architektúra

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

A Számítógépek hardver elemei

Számítógépek felépítése

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

Digitális technika VIMIAA01

Digitális technika VIMIAA01

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

SZÁMÍTÓGÉP FELÉPÍTÉSE (TK 61-TŐL)

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Előadás_#02. Előadás_02-1 -

Számítógépek felépítése, alapfogalmak

Központi vezérlőegység

Bepillantás a gépházba

Digitális rendszerek. Digitális logika szintje

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

5. tétel. A számítógép sematikus felépítése. (Ábra, buszok, CPU, Memória, IT, DMA, Periféria vezérlő)

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

A mikroprocesszor felépítése és működése

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Informatika érettségi vizsga

ARM Cortex magú mikrovezérlők

Számítógép architektúrák

A számítógép egységei

Periféria kezelési módszerek. programozott megszakításos DMA-s - közvetlen szoftver ütemezés - lekérdezéses ütemezés

Perifériák hozzáadása a rendszerhez

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

A számítógép fő részei

AF hangú kód adó-vevő. Fő jellemzők:

Számítógép felépítése

Operációs rendszerek Folyamatok 1.1

Kezelés FC72x Tűzjelző központ FT7224 Tűzjelző kezelő egység. RIASZTÁS-kezelés. 3. Olvassa el a tűz helyét a Kijelzőn. 4.

Számítógépek felépítése, alapfogalmak

SzA19. Az elágazások vizsgálata

A Számítógépek hardver elemei

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

Jelfeldolgozás a közlekedésben

Digitális technika (VIMIAA01) Laboratórium 11

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

Digitális technika (VIMIAA01) Laboratórium 11

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Összeadás BCD számokkal

1. MODUL - ÁLTALÁNOS FOGALMAK

Számítógép Architektúrák I-II-III.

Előadó: Nagy István (A65)

Járműfedélzeti rendszerek I. 4. előadás Dr. Bécsi Tamás

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Digitális rendszerek. Utasításarchitektúra szintje

Kameleon Light Bootloader használati útmutató

Adatok ábrázolása, adattípusok

Számítógép Architektúrák

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Szekvenciális hálózatok és automaták

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Programozható logikai vezérlő

IT - Alapismeretek. Feladatgyűjtemény

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István

MOTOR HAJTÁS Nagyfeszültségű megszakító

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

Windows ütemezési példa

Operációs rendszerek. Bemutatkozás

SZÁMÍTÓGÉPARCHITEKTÚRÁK

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

SR mini PLC Modbus illesztő modul. Modul beállítása Bemeneti pontok kiosztása főmodul esetén Bemeneti pontok címkiosztása kiegészítő modul esetében

Programozási segédlet DS89C450 Fejlesztőpanelhez

TestLine - zsoltix83tesztje-01 Minta feladatsor

MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka

Laboratóriumi műszerek megvalósítása ARM alapú mikrovezérlővel és Linux-szal

2017/12/16 21:33 1/7 Hardver alapok

Programozás alapjai. 10. előadás

IDAXA-PiroSTOP. PIRINT PiroFlex Interfész. Terméklap

1. Fejezet: Számítógép rendszerek. Tipikus számítógép hirdetés

3.óra Beviteli perifériák. Perifériák: A szg.-hez csatolt külső eszközök. A periféria illesztőkön keresztül csatlakoznak.

A Számítógépek felépítése, mőködési módjai

elektronikus adattárolást memóriacím

Moduláris USB billentyűzet emulátor

2016/08/31 02:45 1/6 Hardver alapok

Első sor az érdekes, IBM PC ra alapul: 16 bites feldolgozás, 8 bites I/O (olcsóbb megoldás). 16 kbyte RAM. Nem volt háttértár, 5 db ISA foglalat

1. Milyen eszközöket használt az ősember a számoláshoz? ujjait, fadarabokat, kavicsokat

I+K technológiák. Digitális adatátviteli alapfogalmak Aradi Szilárd

Billentyűzet. Csatlakozók: A billentyűzetet kétféle csatlakozóval szerelhetik. 5 pólusú DIN (AT vagy XT billentyűzet csatlakozó),

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

Utolsó módosítás:

Alaplap: közös kapcsolódási felület a számítógép részegységei számára

_INVHU000_WriteReadParameter.cxf Frekvenciaváltók

5.4.2 Laborgyakorlat: A Windows XP telepítése

TestLine - zsoltix83tesztje-01 Minta feladatsor

Megszakítási rendszer

Silabs STK3700, Simplicity Studio laborgyakorlat

Átírás:

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 seebauer.marta@roik.bmf.hu

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. A megszakítás bekövetkezésekor az éppen futó programról vezérlés ideiglenesen átadódik egy másik program számára, amely kiszolgálja a 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 CPU-n futó program Megszakítás helye A megszakítást kezelő program 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( flag) ) 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 CPU INTACK U1 U2 U3 Un INTR

Prioritási csoportok szervezése INTACK U1 U2 INTACK1 CPU Prioritásos arbitrálási áramkör U1 U2 INTR1 INTACKn 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 U2 Un CPU Prioritásos arbitrálási áramkör INTR1 INTACK1 INTR2 INTACK2 INTACKn 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 Megszakítási szint 2 1 3 Normál processzor-állapot Engedélyezett megszakításkérések 2 3 1 t 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 Legmagasabb prioritású megszakítási szint 1 Közbenső prioritású megszakítási szint 2 2 Legalacsonyabb prioritású megszakítási szint 3 Normál processzor-állapot Engedélyezett megszakításkérések 2 3 1 t 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-es megszakítási szint 2-es megszakítási szint 3-as megszakítási szint Normál processzor-állapot Engedélyezett megszakításkérések 2 3 2 1 1 2 3 t Többszintű megszakításrendszerben a kiválasztó logika működésének egy másik lehetséges algoritmusa a következő: a kiválasztó logika keresi a pillanatnyi CPUszintnél magasabb prioritási szintű engedélyezett megszakítás-kéréseket. 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. a megszakított program állapotjellemzői a főtárnak a megszakított szinthez tartozó kijelölt területén tárolódnak, majd az új 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.

Többszintű megszakítási rendszerek 1-es megszakítási szint 1/c 2-es megszakítási szint 2/b 2/b 2/a 3-as megszakítási szint 3/a 3/b Normál processzor-állapot Engedélyezett megszakításkérések 2/b 3/a 3/b 1/c 2/a 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 az őt hívó főprogram számára végez valamilyen tevékenységet hívása a program alapján előre látható teljes egészében szoftvert jelent a megszakított program és a megszakítást feldolgozó program teljesen független egymástól tipikusan véletlenszerű Megszakítás 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 1981- ben 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 IRQ0 IRQ1 IRQ2 IRQ8 IRQ9 IRQ13 Funkció Timer output0 Billentyűzet Kaszkád Reai Time Clock Video, hálózati adapter 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.