Prerušenie vs Výnimka
V ktoromkoľvek počítači by sa počas jeho bežného vykonávania programu mohli vyskytnúť udalosti, ktoré spôsobia dočasné zastavenie CPU. Takéto udalosti sa nazývajú prerušenia. Prerušenie môže spôsobovať chyba softvéru alebo hardvéru. Hardvérové prerušenia sa nazývajú (jednoducho) prerušenia, zatiaľ čo softvérové prerušenia sa nazývajú výnimky. Akonáhle sa vyvolá prerušenie (softvér alebo hardvér), riadenie sa prenesie do špeciálneho podprogramu s názvom ISR (Interrupt Service Routine), ktorý dokáže spracovať podmienky vyvolané prerušením.
Čo je to prerušenie?
Pojem prerušenie je zvyčajne vyhradený pre hardvérové prerušenia. Sú to prerušenia riadenia programu spôsobené udalosťami externého hardvéru. Tu znamená externý externý procesor. Hardvérové prerušenia zvyčajne pochádzajú z mnohých rôznych zdrojov, ako sú napríklad časovač, periférne zariadenia (klávesnice, myš atď.), I / O porty (sériové, paralelné atď.), Diskové jednotky, hodiny CMOS, rozširujúce karty (zvuková karta, video) karta atď.). To znamená, že k hardvérovým prerušeniam takmer nikdy nedôjde v dôsledku nejakej udalosti súvisiacej s vykonávajúcim programom. Napríklad udalosť ako stlačenie klávesu na klávesnici používateľom alebo časový limit interného hardvérového časovača môže zvýšiť tento druh prerušenia a informovať CPU, že určité zariadenie vyžaduje určitú pozornosť. V takejto situácii CPU zastaví to, čo práve robilo (tj pozastaví aktuálny program),poskytuje službu požadovanú zariadením a vráti sa k normálnemu programu. Keď dôjde k hardvérovým prerušeniam a procesor spustí ISR, ďalšie hardvérové prerušenia sú deaktivované (napr. V strojoch s rozlíšením 80 × 86). Ak potrebujete, aby sa počas chodu ISR vyskytli ďalšie hardvérové prerušenia, musíte to urobiť výslovne vymazaním príznaku prerušenia (pomocou inštrukcie sti). V strojoch s rozmermi 80 × 86 bude mať vyčistenie príznaku prerušenia vplyv iba na hardvérové prerušenia.vymazanie príznaku prerušenia ovplyvní iba hardvérové prerušenia.vymazanie príznaku prerušenia ovplyvní iba hardvérové prerušenia.
Čo sú výnimky?
Výnimkou je softvérové prerušenie, ktoré je možné identifikovať ako špeciálnu rutinu obsluhy. Výnimku je možné identifikovať ako automaticky sa vyskytujúcu pascu (Trap je možné identifikovať ako prenos kontroly, ktorý iniciuje programátor). Spravidla neexistujú žiadne konkrétne pokyny spojené s výnimkami (pasce sa generujú pomocou konkrétnej inštrukcie). Takže nastane výnimka z dôvodu „výnimočnej“podmienky, ktorá nastane počas vykonávania programu. Napríklad delenie nulou, vykonanie nezákonného operačného kódu alebo porucha súvisiaca s pamäťou môžu spôsobiť výnimky. Kedykoľvek dôjde k výnimke, CPU dočasne pozastaví program, ktorý vykonával, a spustí ISR. ISR bude obsahovať, čo robiť s výnimkou. Môže to problém vyriešiť, alebo ak to nie je možné, môžete program elegantne prerušiť vytlačením vhodnej chybovej správy. Aj keď konkrétna inštrukcia nespôsobí výnimku, výnimku vždy spôsobí inštrukcia. Napríklad chyba delenia nulou môže nastať iba počas vykonania inštrukcie delenia.
Aký je rozdiel medzi prerušením a výnimkou?
Prerušenia sú hardvérové prerušenia, zatiaľ čo výnimkou sú softvérové prerušenia. Výskyty prerušenia hardvéru zvyčajne zakazujú ďalšie prerušenia hardvéru, ale to neplatí pre výnimky. Ak potrebujete zakázať hardvérové prerušenia, kým nebude poskytnutá výnimka, musíte explicitne vymazať príznak prerušenia. Vlajka prerušenia v počítači zvyčajne ovplyvňuje (hardvérové) prerušenia na rozdiel od výnimiek. To znamená, že vyčistenie tohto príznaku nezabráni výnimkám.