Přerušovací systém

Princip přerušení:

pix30_1.gif (4204 bytes)

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