Prekid protiv zamke
Na bilo kojem računalu, tijekom normalnog izvršavanja programa, može doći do događaja koji mogu uzrokovati privremeno zaustavljanje CPU-a. Ovakvi događaji nazivaju se prekidi. Prekidi mogu biti uzrokovani softverskim ili hardverskim greškama. Hardverski prekidi nazivaju se (jednostavno) prekidi, dok se softverski prekidi nazivaju izuzecima ili zamkama. Iznimka je automatski generirani softverski prekid, dok je Trap softverski invociran prekid koji pokreće programer. Nakon što se podigne prekid (softverski ili hardverski), kontrola se prenosi na posebnu potprogramu nazvanu ISR (Interrupt Service Routine) koja može rukovati uvjetima koje je pokrenuo prekid.
Što je prekid?
Pojam Interrupt obično je rezerviran za hardverske prekide. To su prekidi kontrole programa uzrokovani vanjskim hardverskim događajima. Ovdje vanjski znači vanjski u odnosu na CPU. Hardverski prekidi obično dolaze iz mnogo različitih izvora kao što su tajmer čip, periferni uređaji (tipkovnice, miš, itd.), I/O portovi (serijski, paralelni, itd.), diskovni pogoni, CMOS sat, kartice za proširenje (zvučna kartica, video kartica itd.). To znači da se hardverski prekidi gotovo nikad ne događaju zbog nekog događaja povezanog s programom koji se izvršava. Na primjer, događaj kao što je korisnikov pritisak na tipku na tipkovnici ili istek internog hardverskog timera može potaknuti ovu vrstu prekida i može obavijestiti CPU da određeni uređaj treba malo pažnje. U takvoj situaciji CPU će zaustaviti sve što je radio (tj. pauzirati trenutni program), pružiti uslugu koju uređaj zahtijeva i vratiti se na normalan program. Kada dođe do hardverskih prekida i CPU pokrene ISR, ostali hardverski prekidi su onemogućeni (npr.g. u strojevima 80×86). Ako trebate da se dogode drugi hardverski prekidi dok ISR radi, morate to učiniti eksplicitno brisanjem oznake prekida (sa sti instrukcijom). U 80×86 strojevima, brisanje oznake prekida će utjecati samo na hardverske prekide.
Što je zamka?
Zamka se može identificirati kao prijenos kontrole, koji pokreće programer. Pojam Trap koristi se naizmjenično s pojmom Exception (što je softverski prekid koji se automatski pojavljuje). Ali neki bi mogli tvrditi da je trap jednostavno poseban poziv potprograma. Stoga spadaju u kategoriju softverski invociranih prekida. Na primjer, u 80×86 strojevima, programer može koristiti int instrukciju za pokretanje zamke. Budući da je zamka uvijek bezuvjetna, kontrola će se uvijek prenijeti na potprogram povezan sa zamkom. Točna instrukcija, koja poziva rutinu za rukovanje zamkom se lako identificira jer se eksplicitna instrukcija koristi za specificiranje zamke.
Koja je razlika između prekida i zamke?
Prekidi su hardverski prekidi, dok su zamke softverski invocirani prekidi. Pojave hardverskih prekida obično onemogućuju druge hardverske prekide, ali to ne vrijedi za zamke. Ako trebate onemogućiti hardverske prekide dok se trap ne posluži, morate eksplicitno poništiti oznaku prekida. I obično oznaka prekida na računalu utječe na (hardverske) prekide za razliku od zamki. To znači da brisanje ove oznake neće spriječiti zamke. Za razliku od zamki, prekidi bi trebali sačuvati prethodno stanje CPU-a.