Přerušení vs past
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. Takové události 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 nebo pasti. Výjimka je automaticky generované softwarové přerušení, zatímco Trap je softwarově vyvolané přerušení iniciované programátorem. Jakmile je přerušení (softwarové nebo hardwarové) aktivováno, je řízení přeneseno do speciálního podprogramu zvaného ISR (Interrupt Service Rutine), 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í cokoliv, co 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ř. G. ve strojích 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 je past?
Trap lze identifikovat jako přenos řízení, který je iniciován programátorem. Termín Trap se používá zaměnitelně s termínem Exception (což je automaticky se vyskytující softwarové přerušení). Někdo ale může namítnout, že past je prostě volání speciálního podprogramu. Spadají tedy do kategorie přerušení vyvolaných softwarem. Například na strojích 80×86 může programátor použít instrukci int ke spuštění pasti. Protože depeše je vždy bezpodmínečná, řízení bude vždy přeneseno do podprogramu spojeného s depeší. Přesná instrukce, která vyvolá rutinu pro manipulaci s pastí, je snadno identifikovatelná, protože k určení pasti se používá explicitní instrukce.
Jaký je rozdíl mezi přerušením a pastí?
Přerušení jsou hardwarová přerušení, zatímco depeše jsou softwarově vyvolaná přerušení. Výskyty hardwarových přerušení obvykle zakazují jiná hardwarová přerušení, ale to neplatí pro depeše. Pokud potřebujete zakázat hardwarová přerušení, dokud nebude obsloužena past, musíte explicitně zrušit příznak přerušení. A obvykle příznak přerušení na počítači ovlivňuje (hardwarová) přerušení na rozdíl od pastí. To znamená, že vymazání tohoto příznaku nezabrání pastím. Na rozdíl od pastí by přerušení měla zachovat předchozí stav CPU.