Rozdíl mezi přerušením a výjimkou

Rozdíl mezi přerušením a výjimkou
Rozdíl mezi přerušením a výjimkou

Video: Rozdíl mezi přerušením a výjimkou

Video: Rozdíl mezi přerušením a výjimkou
Video: Настройка сети (netplan) в Ubuntu 18.04 /20.04 | Статический ip | Network configuration (netplan) 2024, Červenec
Anonim

Přerušení vs výjimka

V každém 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í může být způsobeno chybami 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 dojde k přerušení (softwaru nebo hardwaru), řízení se přenese do speciálního podprogramu zvaného ISR (Interrupt Service Routine), který dokáže zpracovat podmínky vyvolané přerušením.

Co je přerušení?

Pojem přerušení je obvykle vyhrazen pro hardwarová přerušení. Jsou to přerušení řízení programu způsobené externími hardwarovými událostmi. Externí zde znamená externí vůči CPU. Hardwarová přerušení obvykle pocházejí z mnoha různých zdrojů, jako je čip časovače, 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 nedochází kvůli nějaké události související se spouštěným programem. Například událost, jako je stisknutí klávesy na klávesnici uživatelem, nebo vypršení časového limitu interního hardwarového časovače, může způsobit 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í, co kdy dělal (tj. pozastaví aktuální program), poskytne službu požadovanou zařízením a vrátí se zpět k normálnímu programu. Když dojde k hardwarovým přerušením a CPU spustí ISR, ostatní hardwarová přerušení jsou deaktivována (např. u počítačů 80×86). Pokud potřebujete, aby při běhu ISR došlo k dalším hardwarovým přerušením, musíte to udělat explicitně zrušením příznaku přerušení (pomocí instrukce sti). U počítačů 80×86 ovlivní vymazání příznaku přerušení pouze hardwarová přerušení.

Co jsou výjimky?

Výjimka je softwarové přerušení, které lze identifikovat jako speciální obslužnou rutinu. Výjimku lze identifikovat jako automaticky se vyskytující past (past 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). Takže výjimka nastane kvůli „výjimečné“podmínce, která nastane během provádění programu. Například dělení nulou, provedení nelegálního operačního kódu nebo chyba související s pamětí může způsobit výjimky. Kdykoli je vyvolána výjimka, CPU dočasně pozastaví program, který spouštěl, a spustí ISR. ISR bude obsahovat, co dělat s výjimkou. Může problém opravit, nebo pokud to není možné, může program elegantně přerušit vytištěním vhodné chybové zprávy. I když konkrétní instrukce nezpůsobí výjimku, výjimka bude vždy způsobena instrukcí. Například k dělení nulovou chybou může dojít 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í, zatímco výjimky jsou softwarová přerušení. Výskyt hardwarových přerušení obvykle zakáže jiná hardwarová přerušení, ale to neplatí pro výjimky. Pokud potřebujete zakázat hardwarová přerušení, dokud není obsloužena výjimka, musíte explicitně zrušit příznak přerušení. A obvykle příznak přerušení na počítači ovlivní (hardwarová) přerušení na rozdíl od výjimek. To znamená, že vymazání tohoto příznaku nezabrání výjimkám.

Doporučuje: