kategória | ||||||||||
| ||||||||||
| ||
|
||||||||||
A megszakítási rendszer (fogalma; megszakítási okok; a megszakítás folyamata; az egy- és a többszintü megszakítási rendszer)
A számítógépnek rugalmasan reagálnia kell a külvilág eseményeire. 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. A megszakít 929e41j ást kiszolgáló program lefutása után pedig a megszakított program végrehajtása a következö utasításától kezdve folytatódik.
Váratlan esemény
aszinkron szinkron
(teljesen reprodukálhatatlan) (bármikor reprodukálható, a program minden futásakor ugyanott következik be)
várható nem várható
pl. DMA pl. hardver hiba → paritás hiba, áramkimaradás
A megszakítások okai vagy forrásai:
1. Géphibák:
- Az egyes eszközök valamilyen hibajavító kód segítségével ismerik fel a hibákat
- A CPU regiszterei
- Operatív tár
- Adatátvitel
- Energiaellátás hibái
- Klimatizáció
2. I/O források: a perifériák megszakítás-kérö jelzései (CPU dobozon belül)
3. Külsö források → másik számítógép
4. Programozói források
Utasítások végrehajtásakor keletkezö megszakítások:
Hiba, nem kért, váratlan (arch. specifikusak)
o Memóriavédelem megsértése (saját részéröl túlmutat)
o Tárkapacitás túlcímzés (tényleges)
o Címzési elöírások megsértése
o Aritmetikai és logikai müveletek miatti megszakítás (kivételek:tömbindex-túlcímzés, 0-val való osztás, overflow)
Szándékos
o Rendszerhívások (pl. az Intel CPU-k overflow flag-je jelzi, ha túlcsordulás lépett fel. Az INTO utasítással egy megszakítás kérhetö: korrekció.)
Megszakítás-kiszolgálás
1. egy egység aktiválja az INTR. bemenetet
2. a CPU elfogadja ezt az INT kérést, ha
megszakítható állapotban van
megfelelö a prioritás nagysága
a beérkezett megszakítás nincs maszkolva (letiltva)
A 3 felt. teljesülése esetén INT elfogadva
3. 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
4. CPU elmenti a verembe az aktuális állapot információkat (PC, flag) automatikusan
5. a megszakított program adatterének mentése (regiszterkészlet)
6. a megszakítást igénylö azonosítása (ha egy INT-hez több egység is tartozik)
7. megszakítás kiszolgálása
8. az adattér visszaállítása
9. A CPU a kiszolgálás végeztével visszaküld egy nyugtát az egységnek, az pedig deaktiválja a jelet
A megszakítás kiszolgálása után a megszakított program folytatódik, vagy nem (reset).
Mindegyik INT-hez tarozik egy bit: a CPU ezeket vizsgálja, amikor fogadóképes.
A megszakítást kérö azonosítása
A legegyszerübb lehetöség a megszakítások egyenkénti kiszolgálása, azok beérkezési sorrendjében. Hátránya, hogy a megszakítások kiszolgálása közben érkezö megszakítást nem tudja kiszolgálni, így a halaszthatatlan kérelmek elveszhetnek.
1. Lekérdezéses (polling): Valamilyen sorrendben lekérdezzük az egységeket
Hardveres úton: daisy chain
Szoftveres úton: az operációs rendszer
2. Vektoros: A megszakítást kérö eszköz a kiszolgáló rutin kezdöcímét határozza meg a megszakítási vezérlö és a processzor számára.
Több megszakítási vonal esetén minden eszköz saját megszakítást kérö vezetékkel rendelkezik, így a kérelem helye egyértelmüen megállapítható.
Megszakítási rendszerek szintek szerint
Egyszintü: Nincs lehetöség a kiszolgáló rutin felfüggesztésére egy újabb megszakítási kérelem által. A kiválasztó logika a kiszolgálás közben érkezett megszakítások közül a legmagasabb prioritású engedélyezett megszakítás-kérést engedélyezi. Az 1-es forrás szerinti kérés feldolgozása hosszabb ideig is eltarthat, viszont az 0-ás forrás megszakítás-kérése esetleg nem türhet ekkora halasztást.
INT
normál felh.-i szint
Többszintü: keresi a pillanatnyi CPU-szintnél magasabb prioritás-szintü engedélyezett megszakítás-kéréseket. Kiválasztja a legalacsonyabb prioritás-szintüt. PSW-csere esetén ez oly módon zajlik le, hogy a megszakított szint PSW-je Old PSW-ként tárolódik, a másik rekesz tartalma pedig New PSW-ként betöltödik a programállapot-regiszterbe. Az elfogadott megszakítás-kérés nyugtázódik. Ha nem talál az utolsó szintnél magasabb prioritású engedélyezett kérést, akkor megengedi a legutolsó New PSW-ben megjelölt utasítás végrehajtását.
Kompromisszum: az elözö kettö ötvözése, azaz szinteket rendelnek a megszakítások egy-egy csoportjához
Szinten belül egyszintü, szintek
között többszintü
Találat: 467