Prekid vs Zamka
Na bilo kojem računalu, tijekom uobičajenog izvršavanja programa, mogu se dogoditi događaji koji mogu uzrokovati privremeni zaustavljanje CPU-a. Događaji poput ovih nazivaju se prekidima. Prekide mogu uzrokovati softverske ili hardverske greške. Hardverski prekidi nazivaju se (jednostavno) prekidima, dok se softverski prekidi nazivaju Iznimke ili Zamke. Iznimka je automatski generirani softverski prekid, dok je Zamka softverski pokrenut prekid koji je pokrenuo programer. Jednom kada se podigne prekid (softver ili hardver), kontrola se prenosi u posebnu potprogram koji se naziva ISR (Interrupt Service Rutine) koji može obraditi uvjete koje prekida stvara.
Što je prekid?
Pojam Prekid obično je rezerviran za hardverske prekide. Oni su prekidi upravljanja programom uzrokovani vanjskim hardverskim događajima. Ovdje vanjsko znači izvan CPU-a. Hardverski prekidi obično dolaze iz mnogih različitih izvora kao što su timer čip, periferni uređaji (tipkovnice, miš, itd.), I / O priključci (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 vezanog uz izvršni program. Na primjer, događaj poput pritiska tipke od strane korisnika ili vremenskog ograničenja internog hardverskog odbrojavanja može povećati 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. Zaustaviti trenutni program),pruža uslugu koju zahtijeva uređaj i vratit će se na uobičajeni program. Kada se pojave hardverski prekidi i CPU pokrene ISR, ostali hardverski prekidi su onemogućeni (npr. Na 80 × 86 strojevima). Ako su vam potrebni drugi hardverski prekidi dok se ISR izvodi, to morate učiniti izričito uklanjanjem zastavice prekida (s uputama sti). U strojevima 80 × 86, brisanje zastavice prekida utjecat će samo na hardverske prekide.brisanje zastavice prekida utjecat će samo na hardverske prekide.brisanje zastavice prekida utjecat će samo na hardverske prekide.
Što je zamka?
Zamka se može identificirati kao prijenos kontrole, koji pokreće programer. Pojam Zamka koristi se naizmjenično s izrazom Iznimka (koji je automatski prekid softvera). Ali neki mogu tvrditi da je zamka jednostavno poseban potprogram. Tako spadaju u kategoriju softverski prekida. Na primjer, u strojevima 80 × 86 programer može upotrijebiti int naredbu za pokretanje zamke. Budući da je zamka uvijek bezuvjetna, kontrola će se uvijek prenijeti u potprogram povezan sa zamkom. Točna uputa koja poziva rutinu za rukovanje zamkom lako se prepoznaje jer se za određivanje zamke koristi izričita uputa.
Koja je razlika između Prekid i Zamka?
Prekidi su hardverski prekidi, dok su zamke prekidi softverski pozivani. Pojave hardverskih prekida obično onemogućuju druge hardverske prekide, ali to ne vrijedi za zamke. Ako trebate onemogućiti hardverske prekide dok se ne posluži zamka, morate izričito obrisati zastavicu prekida. I obično zastavica prekida na računalu utječe na (hardverske) prekide za razliku od zamki. To znači da čišćenje ove zastave neće spriječiti zamke. Za razliku od zamki, prekidi bi trebali sačuvati prethodno stanje CPU-a.