Prekinitev proti izjemi
V katerem koli računalniku lahko med običajnim izvajanjem programa pride do dogodkov, ki lahko povzročijo začasno zaustavitev CPE. Takšni dogodki se imenujejo prekinitve. Prekinitve lahko povzročijo napake programske ali strojne opreme. Strojne prekinitve imenujemo (preprosto) prekinitve, programske prekinitve pa izjeme. Ko se sproži prekinitev (programska ali strojna oprema), se nadzor prenese na poseben podprogram, imenovan ISR (Interrupt Service Routine), ki lahko obravnava pogoje, ki jih sproži prekinitev.
Kaj je prekinitev?
Izraz prekinitev je običajno rezerviran za strojne prekinitve. So prekinitve krmiljenja programa, ki jih povzročijo dogodki zunanje strojne opreme. Tukaj zunanji pomeni zunaj CPE. Prekinitve strojne opreme običajno prihajajo iz številnih različnih virov, kot so časovnik, periferne naprave (tipkovnice, miške itd.), V/I vrata (zaporedna, vzporedna itd.), diskovni pogoni, ura CMOS, razširitvene kartice (zvočna kartica, video kartico itd.). To pomeni, da do prekinitev strojne opreme skoraj nikoli ne pride zaradi nekega dogodka, povezanega z izvajajočim se programom. Na primer, dogodek, kot je pritisk tipke na tipkovnici s strani uporabnika, ali iztekanje notranjega časovnika strojne opreme lahko sproži tovrstno prekinitev in lahko obvesti CPE, da določena naprava potrebuje nekaj pozornosti. V takšni situaciji bo CPE ustavil vse, kar je počel (tj. začasno ustavil trenutni program), zagotovil storitev, ki jo zahteva naprava, in se vrnil k običajnemu programu. Ko pride do prekinitev strojne opreme in CPE zažene ISR, so druge prekinitve strojne opreme onemogočene (npr. v strojih 80×86). Če želite, da se med izvajanjem ISR pojavijo druge prekinitve strojne opreme, morate to storiti izrecno tako, da počistite zastavico prekinitve (z navodilom sti). V napravah 80×86 bo brisanje zastavice za prekinitev vplivalo samo na prekinitve strojne opreme.
Kaj so izjeme?
Izjema je programska prekinitev, ki jo je mogoče identificirati kot posebno rutino obdelovalca. Izjemo je mogoče identificirati kot samodejno nastalo past (past je mogoče identificirati kot prenos nadzora, ki ga sproži programer). Na splošno ni posebnih navodil, povezanih z izjemami (pasti se generirajo z uporabo posebnega navodila). Do izjeme torej pride zaradi "izjemnega" stanja, ki se pojavi med izvajanjem programa. Na primer, deljenje z ničlo, izvajanje nedovoljene opcijske kode ali napaka, povezana s pomnilnikom, lahko povzroči izjeme. Kadarkoli se sproži izjema, CPE začasno prekine program, ki ga je izvajal, in zažene ISR. ISR bo vseboval, kaj storiti z izjemo. Lahko popravi težavo ali, če to ni mogoče, lahko elegantno prekine program tako, da natisne ustrezno sporočilo o napaki. Čeprav določeno navodilo ne povzroči izjeme, bo izjemo vedno povzročilo navodilo. Na primer, do napake pri deljenju z nič lahko pride samo med izvajanjem ukaza deljenja.
Kakšna je razlika med prekinitvijo in izjemo?
Prekinitve so strojne prekinitve, medtem ko so izjeme programske prekinitve. Pojav prekinitev strojne opreme običajno onemogoči druge prekinitve strojne opreme, vendar to ne velja za izjeme. Če morate onemogočiti prekinitve strojne opreme, dokler ni postrežena izjema, morate izrecno počistiti zastavico prekinitve. Običajno zastavica prekinitve v računalniku vpliva na (strojne) prekinitve v nasprotju z izjemami. To pomeni, da brisanje te zastavice ne bo preprečilo izjem.