Prerušenie v mikroprocesore: definícia, príčiny a fungovanie (interrupt)
Prerušenie v mikroprocesore: jasná definícia, hlavné príčiny a praktické fungovanie (interrupt). Naučte sa, ako HW/SW udalosti ovplyvňujú výkon a reakcie CPU.
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í.
Tento graf ukazuje, čo sa stane, keď sa zavolá prerušenie
Ako funguje prerušenie
O hardvérové alebo softvérové volanie prerušenia (známe ako žiadosť o prerušenie alebo IRQ) sa stará "obsluha prerušenia" alebo "rutina obsluhy prerušenia" (ISR) v procesore. Tá umiestni to, čo v danom čase robí, na zásobník a potom nasleduje určité inštrukcie, ktoré v mene systému vykonajú danú úlohu, ktorá nemusí byť súčasťou programu, ktorý vykonáva. Po skončení vykonávania inštrukcií si ISR vezme späť to, čo vložil na zásobník, a pokračuje v tom, čo robil pred tým, ako došlo k prerušeniu.
Mnohé radiče prerušenia dnešných procesorov používajú vektor prerušenia na triedenie prerušenia okrem iného aj podľa toho, odkiaľ prichádza. Vektor zvyčajne obsahuje kód, ktorý sa musí spustiť, keď nastane prerušenie. ISR sú vo všeobecnosti zodpovedné za riešenie alebo "obsluhu" prerušenia spolu s udržiavaním seba samého v prevádzkyschopnom stave.
Použitie prerušenia
- Spúšťanie úloh v pravidelných intervaloch
- Servis externého zariadenia, ktorý sa môže uskutočniť kedykoľvek
- Odstránenie potreby synchrónneho dotazovania
- Spustenie akcie operačného systému (OS)
Otázky a odpovede
Otázka: Čo je to prerušenie?
Odpoveď: Prerušenie je činnosť mikroprocesora, ktorá nie je súčasťou vykonávaného programu v dôsledku vonkajších udalostí.
Otázka: Čo spôsobuje, že sa prerušenia v procesore vyskytujú najčastejšie?
Odpoveď: Prerušenia sa v procesore najčastejšie vyskytujú v dôsledku prijímania signálov z hardvéru.
Otázka: Môžu byť prerušenia spôsobené softvérom?
Odpoveď: Áno, prerušenia môže spôsobiť aj softvér, ktorý beží paralelne s vykonávaným programom.
Otázka: Uveďte niekoľko príkladov udalostí, ktoré môžu spôsobiť prerušenie.
Odpoveď: Príklady udalostí, ktoré môžu spôsobiť prerušenie, sú stlačenie klávesov na klávesnici, spustenie časovača a prenosy údajov.
Otázka: Závisí prerušenie od miesta vykonávania programu?
Odpoveď: Nie, prerušenie môže nastať kedykoľvek počas vykonávania programu bez ohľadu na to, kde sa program nachádza vo svojom zdrojovom kóde.
Otázka: Je prerušenie pre mikroprocesor žiaducou udalosťou?
Odpoveď: Prerušenia sú pre mikroprocesor zvyčajne nežiaduce udalosti, pretože narúšajú vykonávanie programu a vyžadujú okamžitú pozornosť.
Otázka: Ako mikroprocesor reaguje na prerušenie?
Odpoveď: Mikroprocesor dočasne pozastaví vykonávaný program a vykoná rutinu obsluhy prerušenia (ISR) na spracovanie prerušenia pred návratom k vykonávanému programu.
Prehľadať