SzA10. Megszakítási rendszer Flashcards
A megszakítási rendszer fogalma
A feldolgozás szempontjából véletlennek tekinthető események kezelése. Cél: a változó körülmények között az optimális működés biztosítása.
Mi történik megszakítás esetén?
- Automatikusan tárolódik az éppen futó program állapota. (Regiszterek, állapotjelzők)
- Beállítódik a megszakító rutin kontextusa
Megszakítási okok/források (prioritási sorrendben)
Megszakítási okok/források (prioritási sorrendben):
-
Gépi hibák: automatikus hibafigyelő áramkörök jelzése
- hibajelző kódok, adatátviteli vonalak hibáit tárja fel, regiszterek, memória hibák jelzésére szolgál (pl.: paritás)
- energiaellátás: zavar esetén jelez
- hűtés rendszer: zavar esetén jelez
-
I/O források
- CPU által kezdeményezett I/O műveletek befejezését jelző megszakítások
- üzenetközlést kezdeményező perifériák megszakítás kérései
- Külső források: RST, hálózati kommunikáció
-
Programozási források
- szándékos: pld. OS rendszeres hívások, BIOS hívások
- hibakezelés: Nem várt esemény az utasítás végrehajtás közben
A megszakítás előkészítése
- egy eszköz megszakításkérést küld a CPU-nak, aktiválja az INTR vezérlővonalat
- elfogadható-e a megszakítás?
- megszakítás kezelő áramkör
A megszakítás érvénybe jut, ha
- az aktuális program vagy megszakítás megszakítható
- megfelelő a prioritás nagysága
- az adott megszakítás nincs letiltva
- a CPU INTACK jellel nyugtázza a megszakítást
- a kérő deaktiválja INTR-t
Hardver által végzett feladatok a megszakítások során
- A CPU a programtól független veremtárolóba menti a megszakított program aktuális állapot információit. (PC – állapot bitek (állapot regiszterek) (azért menti el, mert ezek az információk kellenek a program esetleges folytatásához))
- Betölti a megszakítás feldolgozó program kezdő címét és beállítja a PC-t (program counter)
Szoftver által végzett feladatok a megszakítások során
- a program adatterének tárolása, mentése
- a megszakításkérő egység beazonosítása
- megszakítás kiszolgálása
- a program adatterének visszatöltése
Megszakítások csoportosítása
Megszakítások csoportosítása
- Szinkron (a program végrehajtása során mindig ugyanott jelentkezik a megszakítás)
- Aszinkron (várható/nem várható)
- véletlenszerűen lépnek fel
- utasítások végrehajtása között: az utasítás végrehajtásainak eredményeképpen -> a kezelés eredményétől függ a program futása (eredményessége)
- utasítások végrehajtás alatt
- A felhasználó által kért: op.a rendszerhívás,…
- A felhasználó által nem kért
- Megszakítás végrehajtsa után a program
- folytatódik,
- befejeződik -> hardver hiba
- Felhasználó által:
- maszkolható (pl. nyomkövetés, I/O-kérés)
- nem maszkolható (pl.: súlyos hardver hiba)
Egyszintű megszakítás
például: legyen összesen 3db megszakítási folyamat 3 prioritási szint -> 1. a legmagasabb, majd a 2. és a 3. a legkisebb. Megszakításnál vagy annak vizsgálatánál a magasabb prioritású kapja meg a feldolgozás lehetőségét előbb. (Ezért lesz a példában az egyes megszakítása hamarabb, mint a hármasé.) A felfelé mutató nyilak és a mellettük lévő számok jelzik az egyes folyamatok megszakításának a kezdetét.
Többszintű megszakítási rendszer
Az egyszintű megszakításnál alkalmazott példa él itt is. A processzor mindig a legnagyobb prioritású megszakítást keresi, de ha több azonos prioritású is van, akkor azok közül a legalacsonyabb szintűvel kezdni. Mielőtt a hármas prioritásút elkezdené, észreveszi, hogy van egy nála kisebb prioritású és áttér arra.
Többszintű, többvonalú megszakítási rendszer
- prioritások (1, 2, 3)
- osztályok (1, 2, 3)
- osztályon belül (a, b, c, d)
- osztályokon belül egyszintű prioritás