Prerušenie vs Výnimka
V ktoromkoľvek počítači môže počas normálneho vykonávania programu dôjsť k udalostiam, ktoré môžu spôsobiť dočasné zastavenie CPU. Takéto udalosti sa nazývajú prerušenia. Prerušenia môžu byť spôsobené poruchami softvéru alebo hardvéru. Hardvérové prerušenia sa nazývajú (jednoducho) prerušenia, zatiaľ čo prerušenia softvéru sa nazývajú Výnimky. Akonáhle je prerušenie (softvér alebo hardvér) vyvolané, je ovládací prvok prenesený do špeciálneho podprogramu s názvom ISR (Interrupt Service Routine), ktorý dokáže spracovať podmienky vyvolané prerušením..
Čo je prerušenie?
Termín Prerušenie je zvyčajne vyhradený pre prerušenia hardvéru. Sú to prerušenia riadenia programu spôsobené externými hardvérovými udalosťami. Tu externý znamená externý procesor. Hardvérové prerušenia zvyčajne pochádzajú z mnohých rôznych zdrojov, ako sú napríklad čip s časovačom, periférne zariadenia (klávesnice, myš atď.), Vstupno / výstupné 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 kvôli nejakej udalosti týkajúcej sa vykonávajúceho programu. Napríklad udalosť, ako napríklad stlačenie klávesu na klávesnici používateľom alebo interné hardvérové vypršanie časového limitu, môže spôsobiť tento druh prerušenia a môže informovať CPU, že určité zariadenie potrebuje určitú pozornosť. V takej situácii CPU zastaví to, čo kedy robilo (t. J. Pozastaví aktuálny program), poskytne službu požadovanú zariadením a vráti sa späť k normálnemu programu. Keď dôjde k prerušeniu hardvéru a CPU spustí ISR, ďalšie hardvérové prerušenia sú vypnuté (napr. Na strojoch 80 × 86). Ak potrebujete, aby sa počas prevádzky ISR vyskytli ďalšie hardvérové prerušenia, musíte to urobiť explicitne zrušením príznaku prerušenia (s inštrukciou sti). Na počítačoch s rozmermi 80 × 86 bude vymazanie príznaku prerušenia ovplyvňovať iba prerušenia hardvéru.
Čo sú výnimky?
Výnimkou je prerušenie softvéru, ktoré možno identifikovať ako špeciálnu rutinu obsluhy. Výnimka môže byť identifikovaná ako automaticky sa vyskytujúci pasca (pasca môže byť identifikovaná ako prenos kontroly, ktorý je iniciovaný programátorom). Vo všeobecnosti s výnimkami nie sú spojené žiadne konkrétne pokyny (pasce sa generujú pomocou špecifickej inštrukcie). Výnimka nastane kvôli „výnimočnej“ podmienke, ktorá nastane počas vykonávania programu. Napríklad delenie nulou, vykonanie nezákonného kódu operačného systému alebo poruchy súvisiace s pamäťou môžu spôsobiť výnimky. Vždy, keď sa objaví výnimka, CPU dočasne pozastaví program, ktorý vykonával, a spustí ISR. ISR bude obsahovať, čo robiť s výnimkou. Môže to napraviť problém alebo, ak to nie je možné, môže program bezchybne prerušiť vytlačením vhodného chybového hlásenia. Aj keď konkrétna inštrukcia nespôsobuje výnimku, výnimka bude vždy spôsobená inštrukciou. Napríklad delenie nulovou chybou sa môže vyskytnúť iba počas vykonávania inštrukcie delenia.
Aký je rozdiel medzi prerušením a výnimkou?
Prerušenia sú prerušenia hardvéru, zatiaľ čo výnimkou sú prerušenia softvéru. Výskyt prerušenia hardvéru zvyčajne deaktivuje iné prerušenia hardvéru, ale to neplatí pre výnimky. Ak potrebujete zakázať prerušenia hardvéru až do doručenia výnimky, musíte explicitne vymazať príznak prerušenia. Na rozdiel od výnimiek zvyčajne príznak prerušenia v počítači ovplyvňuje (hardvérové) prerušenia. To znamená, že vymazanie tohto príznaku nezabráni výnimkám.