Prekid vs Zamka
U bilo kojem računalu tijekom svog uobičajenog izvođenja programa može doći do događaja zbog kojih se CPU privremeno zaustavi. Događaji poput ovih nazivaju se prekidi. Prekidi mogu biti uzrokovani greškama u softveru ili hardveru. Prekidi hardvera nazivaju se (jednostavno) Prekidi, dok se softverski prekidi nazivaju Iznimke ili Zamke. Izuzetak je automatski generirani softverski prekid, dok je Trap prekid softvera koji pokreće programer. Jednom kada je prekid (softverski ili hardverski) povišen, kontrola se prebacuje u posebnu potprogramu zvanu ISR (Interrupt Service Routine) koja može podnijeti uvjete koje podiže prekid.
Što je Prekid?
Izraz Prekid obično je rezerviran za hardverske prekide. Oni su prekidi kontrole programa uzrokovani vanjskim događajima hardvera. Ovdje su vanjska sredstva koja su vanjska za CPU. Prekidi hardvera najčešće dolaze iz različitih izvora, kao što su tajmer čip, periferni uređaji (tipkovnice, miš itd.), I / O portovi (serijski, paralelni itd.), Pogoni diska, CMOS sat, kartice za proširenje (zvučna kartica, video kartica itd.). To znači da se hardverski prekidi gotovo nikada ne događaju zbog nekog događaja vezanog za izvršni program. Na primjer, događaj poput pritiska tipke na tipkovnici od strane korisnika ili unutarnje vremensko ograničenje vremenskog ograničenja hardvera može potaknuti ovu vrstu prekida i može obavijestiti CPU da određenom uređaju treba malo pažnje. U situaciji poput toga da će procesor zaustaviti sve što je radio (tj. Zaustavio trenutni program), pružit će uslugu koju uređaj zahtijeva i vratit će se u uobičajeni program. Kada dođe do prekida hardvera i CPU pokrene ISR, ostali hardverski prekidi su onemogućeni (npr. Na 80 × 86 strojevima). Ako su vam potrebni drugi prekidi hardvera tijekom ISR-a, to trebate izričito obrisati zastavu prekida (s STI instrukcija). Na 80 × 86 strojevima brisanje zastave prekida utječe samo na hardverske prekide.
Što je zamka?
Zamka se može identificirati kao prijenos kontrole koji pokreće programer. Izraz Trap koristi se naizmjenično s izrazom Izuzeće (koji se automatski pojavljuje softverski prekid). No neki mogu tvrditi da je zamka jednostavno poseban poziv podprograma. Tako spadaju u kategoriju prekida koji se pozivaju na softver. Na primjer, na 80 × 86 strojevima programer može koristiti int upute za pokretanje zamke. Budući da je zamka uvijek bezuvjetna, kontrola će se uvijek prenijeti u podprogram povezan s zamkom. Točna se uputa koja poziva na rutinu za rukovanje zamkom lako identificira jer se za određivanje zamke koristi eksplicitna uputa.
Koja je razlika između Prekida i Zamke?
Prekidi su hardverski prekidi, a zamke softversko prekinuti. Pojave hardverskih prekida obično onemogućuju ostale hardverske prekide, ali to nije točno za zamke. Ako trebate onemogućiti hardverske prekide dok se ne posluži zamka, morate izričito obrisati zastavu prekida. A obično zastava prekida na računalu utječe na (hardverske) prekide za razliku od zamki. To znači da brisanje ove zastave neće spriječiti zamke. Za razliku od zamki, prekidi bi trebali sačuvati prethodno stanje CPU-a.