Kod digitalnih računara prekid (engleski: interrupt) jest zahtjev procesoru da prekine trenutno izvršavajući kôd, kako bi se taj događaj pravovremeno mogao obraditi.
Ako je zahtjev prihvaćen, procesor reaguje obustavljajući trenutne aktivnosti, spremajući njegovo stanje i izvršavajući podrutinu koja se zove upravljač prekida (engleski: interrupt handler). Ovaj prekid je privremen i osim ako prekid ukazuje na fatalnu grešku, procesor nastavlja normalne aktivnosti nakon završetka obrade prekida.[1]
Prekidi se obično koriste na hardverskim uređajima kako bi ukazali na elektroničke ili fizičke promjene stanja koje zahtijevaju pažnju. Prekidi se često koriste kod multitaskinga (istovremeno obavljanje više zadataka).[2]
Vrste
Prekidi mogu izazvati hardverski ili softverski događaji. Oni se dijele na hardverske prekide ili softverske prekide. Za bilo koji određeni procesor, broj hardverskih prekida ograničen je brojem signala zahtjeva za prekid (IRQ), dok je broj softverskih prekida određen dizajnom procesora.
Hardverski prekidi
Zahtjev za prekid hardvera (IRQ) jest elektronički signal koji izdaje neki drugi hardverski uređaj prema procesoru, kako bi naznačio da mu treba pažnja operativnog sistema (OS).[3] Takvi uređaji mogu biti dio računara (npr. kontroler diska) ili mogu biti vanjski periferni uređaji. Na primjer, pritisak tipke na tastaturi ili pomicanje miša pokreće hardverske prekide pomoću kojih procesor očitava pritisak tipke ili položaj miša.
Softverski prekidi
Softverski prekid je zahtijevan od samog procesora nakon izvršavanja određenih instrukcija ili kada su ispunjeni određeni uvjeti. Svaki softverski signal prekida povezan je s određenim rukovaocem prekida.
Softverski prekid može biti namjerno uzrokovan izvršavanjem posebne instrukcije koja se poziva na prekid kad se izvrši. Takve instrukcije djeluju slično kao pozivi podprograma i koriste se u različite svrhe, poput zahtjeva za uslugama operativnog sistema i interakcije s upravljačkim programima uređaja.
Prekidi softvera mogu se također neočekivano pokrenuti greškama kod izvršavanja programa. Ovi prekidi se obično nazivaju traps (zamke) ili exceptions (izuzeci). Na primjer, izuzetak dijeljenja sa nulom će biti "odbačen" (zahtijeva se prekid softvera) ako procesor izvrši instrukciju sa nulom. Obično će operativni sistem presresti i obraditi ovaj izuzetak.
Tipična upotreba
Prekidi se obično koriste za servisiranje hardverskih tajmera, prijenos podataka i komunikacijske interfejse (npr. UART, Ethernet), rukovanje mišom i tastaturom, te za reagiranje na bilo koje druge vremenski osjetljive događaje kako to zahtijeva aplikativni sistem.
^Jonathan Corbet; Alessandro Rubini; Greg Kroah-Hartman (2005). "Linux Device Drivers, Third Edition, Chapter 10. Interrupt Handling"(PDF). O'Reilly Media. str. 269. Pristupljeno 25. 12. 2014. Then it's just a matter of cleaning up, running software interrupts, and getting back to regular work. The "regular work" may well have changed as a result of an interrupt (the handler could wake_up a process, for example), so the last thing that happens on return from an interrupt is a possible rescheduling of the processor.