Přerušovací systém
Princip přerušení:
n -1, n atd. jsou adresy instrukcí. Pokud při běhu programu dojde k žádosti o přerušení, dokončí se právě probíhající instrukce a systém zajistí úklid kontextu do zásobníku pro přerušení. Kontext obsahuje obsahy střadače registrů v době přerušení a dále je uložena návratová adresa n +1 hlavního programu. Je proveden odskok na adresu instrukce pro obslužnou rutinu (podprogram), přerušení je obslouženo. Instrukce konec přerušení zajistí přepsání kontextu zpět do registru (dojde k vyprázdnění zásobníku pro přerušení a přes návratovou adresu hlavního programu je tento spuštěn a dále běží.
Přerušení může být:
Dále se dělí:
Maskovatelné je druh přerušení, které závisí na nastavení klopného obvodu tzv.masky, který podle stavu na výstupu povolí nebo nepovolí přerušení. K tomu je určen v příznakovém registru bit IF (Interupt flag), který při nastavení do jedničky zajistí maskovatelné přerušení.
Jelikož periferních zařízení je více než dvě, přidává se k procesorům řadič přerušení, který je řadí podle důležitosti (priority) a sděluje procesoru o jaký druh přerušení jde. Při každém přerušení se volá obslužná rutina, která je k tomu určena.
Procesor pracuje s vektorovým systémem přerušení. Tabulka vektorů je uložena v operační paměti, většinou od adresy 0 a každý vektor má velikost 4B. Je to celá adresa (segment i offset) a v operační paměti zabírá asi 1kB. Procesor rozezná 256 přerušení (0-255). Některé vektory jsou pevně určeny a nelze je měnit.
Tabulka vektoru:
00000 | Dělení nulou | vektor 0 |
00004 | Krokování | vektor 1 |
00008 | Nemaskovatelné přerušení | vektor 2 |
00012 | INT 3 | vektor 3 |
Aritmetické přetečení | vektor 4 | |
27 rezervovaných vektorů | ||
224 volných vektorů |
U maskovatelného přerušení dodá řadič přerušení i číslo vektoru, které specifikuje některou z periferií. 27 vektorů si rezervovali tvůrci systému a většinou nejsou využity.
Související odkazy
http://www.fi.muni.cz/usr/pelikan/ARCHIT/TEXTY/PROSTR2.HTML