Prerušenie nastáva vtedy, keď mikroprocesor urobí niečo, čo mu nebolo priamo prikázané v aktuálne spustenom programe, pretože sa vyskytla udalosť mimo bežného toku programu. Prerušenia sa najčastejšie objavujú, keď procesor dostane signál z hardvéru, ale môžu byť vyvolané aj softvérom, ktorý beží spolu s programom (napríklad systémové volania alebo výnimky). Medzi bežné príčiny patria stlačenie klávesov na klávesnici, vypršanie času odpočítavaného zabudovaným časovačom, prenos dát z diskov alebo sietí, či iná udalosť, ktorá si vyžaduje okamžitú pozornosť procesora. Prerušenia môžu nastať kedykoľvek počas behu programu, bez ohľadu na miesto v jeho zdrojovom kóde.
Typy prerušení
- Hardvérové prerušenia – asynchrónne signály od periférií (napr. klávesnica, myš, sieťová karta, disk), ktoré upozorňujú procesor na potrebnú akciu.
- Softvérové prerušenia – vyvolané programom, napr. systémové volania alebo inštrukcia INT v niektorých architektúrach; často sa používajú na prechod do režimu operačného systému.
- Výnimky (exceptions) – synchronné udalosti spôsobené behom inštrukcie (napr. delenie nulou, porušenie pamäte, stránkovacia chyba).
- Nemaskovateľné prerušenia (NMI) – kritické prerušenia, ktoré nemožno zablokovať, používané napr. pri hardvérových chybách alebo poruchách napájania.
Ako prerušenia fungujú (zjednodušený priebeh)
- Periféria alebo softvér pošle procesoru prerušenie (IRQ alebo iný signál).
- Ak sú prerušenia povolené a dané prerušenie má dostatočne vysokú prioritu, procesor ukončí alebo pozastaví vykonávanie aktuálnej inštrukcie (alebo počká na jej dokončenie).
- Procesor uloží kontext (registrový stav, ukazovateľ zásobníka a pod.), aby sa po obsluhe prerušenia mohol vrátiť k pôvodnej úlohe.
- Pomocou vektorovej tabuľky alebo riadiacej logiky sa nájde adresa príslušnej obslužnej rutiny prerušenia (ISR – interrupt service routine).
- Spustí sa ISR, ktorá vykoná potrebné čítanie/čistenie stavov periférie a prípadne prebudí iné časti systému.
- Po dokončení ISR sa obnoví uložený kontext a procesor pokračuje v predchádzajúcej úlohe.
Dôležité pojmy
- ISR (interrupt service routine) – obslužná rutina, ktorá reaguje na konkrétne prerušenie.
- Vektor prerušenia – identifikátor alebo adresa, ktorá ukazuje na správnu ISR.
- Maskovanie prerušenia – dočasné zakázanie určitých prerušeniach, aby sa zabránilo rušeniu kritických sekcií kódu.
- Priorita – mechanizmus určujúci, ktoré prerušenie sa obslúži ako prvé, ak nastane viacero prerušenia súčasne.
- Latency (meškanie) – čas od vzniku prerušenia do začiatku vykonávania ISR; dôležitý parameter pre reálne systémy.
- Nesting – podpora vnorených prerušení, keď ISR môže sama byť prerušená vyššou prioritou.
Riadenie a hardware
Väčšina systémov používa špeciálny čip alebo logiku (napr. PIC, APIC alebo moderné interrupt controller-y) na zber a riadenie IRQ signálov, prideľovanie priorít a distribuovanie vektorov prerušení. Pri DMA prenosoch môže periféria prerušením informovať procesor o dokončení prenosu bez potreby aktívneho čakania procesora (polling).
Praktické dôsledky a príklady
- Pre používateľa: stlačenie klávesy alebo príchod paketov v sieti okamžite spustia reakciu systému bez toho, aby aplikácia musela neustále kontrolovať stav zariadenia.
- Pre programátora OS a ovládačov: dôležité je napísať rýchle a bezpečné ISR, správne spravovať kontext a synchronizovať zdieľané zdroje.
- V reálnych aplikáciách (embedded systémy, priemyselné riadenie) je meranie a optimalizácia latencie kľúčové pre spoľahlivosť a deterministické správanie.
Tip: Ak sa v systéme objavujú neočakávané prerušenia alebo zlé správanie po ich obsluhe, často to súvisí s nesprávnym uložením/obnovením registrov, chybnou konfiguráciou interrupt controllera alebo nekorektným maskovaním prerušení.
