Přerušení vs Výjimka
V kterémkoli počítači může během normálního provádění programu dojít k událostem, které mohou způsobit dočasné zastavení CPU. Události, jako je tato, se nazývají přerušení. Přerušení mohou být způsobeny poruchami softwaru nebo hardwaru. Hardwarová přerušení se nazývají (jednoduše) přerušení, zatímco softwarová přerušení se nazývají Výjimky. Jakmile je přerušení (software nebo hardware) vyvoláno, je ovládací prvek přenesen do speciálního podprogramu nazvaného ISR (Interrupt Service Routine), který dokáže zpracovat podmínky, které jsou přerušení vyvolány..
Co je přerušení?
Termín Přerušení je obvykle vyhrazen pro přerušení hardwaru. Jedná se o přerušení řízení programu způsobené událostmi externího hardwaru. Zde externí znamená externí pro CPU. Hardwarová přerušení obvykle pocházejí z mnoha různých zdrojů, jako je čip s časovačem, periferní zařízení (klávesnice, myš atd.), I / O porty (sériové, paralelní atd.), Diskové jednotky, hodiny CMOS, rozšiřující karty (zvuková karta, video karta atd.). To znamená, že k hardwarovým přerušením téměř nikdy nedojde kvůli nějaké události související s prováděcím programem. Například událost, jako je stisknutí klávesy uživatelem na klávesnici nebo interní hardwarové vypršení časového limitu, může zvýšit tento druh přerušení a může informovat CPU, že určité zařízení vyžaduje určitou pozornost. V takové situaci CPU zastaví to, co kdy dělal (tj. Pozastaví aktuální program), poskytuje službu vyžadovanou zařízením a vrátí se zpět k normálnímu programu. Pokud dojde k přerušení hardwaru a CPU spustí ISR, jsou jiná hardwarová přerušení zakázána (např. V počítačích 80 × 86). Pokud potřebujete, aby se během přerušení ISR vyskytly další hardwarová přerušení, musíte to explicitně provést zrušením příznaku přerušení (s instrukcí sti). U počítačů 80 × 86 bude vymazání příznaku přerušení ovlivňovat pouze hardwarová přerušení.
Co jsou výjimky?
Výjimkou je softwarové přerušení, které lze identifikovat jako rutinu speciální obsluhy. Výjimku lze identifikovat jako automaticky se vyskytující past (Trap lze identifikovat jako přenos kontroly, který je iniciován programátorem). Obecně neexistují žádné specifické instrukce spojené s výjimkami (pasti jsou generovány pomocí specifické instrukce). K výjimce dochází kvůli „výjimečnému“ stavu, ke kterému dochází během provádění programu. Například dělení nulou, provedení nelegálního opcode nebo poruchy související s pamětí mohou způsobit výjimky. Kdykoli je vyvolána výjimka, CPU dočasně pozastaví program, který provádí, a spustí ISR. ISR bude obsahovat, co dělat s výjimkou. Může to problém napravit nebo, pokud to není možné, může program elegantně přerušit tiskem vhodné chybové zprávy. Ačkoli konkrétní instrukce nezpůsobuje výjimku, výjimka bude vždy způsobena instrukcí. Například dělení nulovou chybou může nastat pouze během provádění instrukce dělení.
Jaký je rozdíl mezi přerušením a výjimkou?
Přerušení jsou hardwarová přerušení, výjimkou jsou přerušení softwaru. Výskyt hardwarových přerušení obvykle deaktivuje jiná hardwarová přerušení, ale to neplatí pro výjimky. Pokud potřebujete zakázat hardwarová přerušení, dokud se neobjeví výjimka, musíte explicitně zrušit příznak přerušení. A obvykle příznak přerušení v počítači ovlivňuje (hardwarová) přerušení na rozdíl od výjimek. To znamená, že vymazání tohoto příznaku nezabrání výjimkám.