Katkestus vs Trap
Igas arvutis võib programmi tavapärase täitmise ajal esineda sündmusi, mis võivad põhjustada CPU ajutise seiskumise. Selliseid sündmusi nimetatakse katkestusteks. Katkestused võivad olla põhjustatud nii tarkvara- kui ka riistvararikkest. Riistvara katkestusi nimetatakse (lihts alt) katkestusteks, tarkvara katkestusi aga eranditeks või lõksudeks. Erand on automaatselt genereeritud tarkvarakatkestus, samas kui Trap on programmeerija algatatud tarkvaraline katkestus. Kui katkestus (tarkvara või riistvara) on tõstetud, kantakse juhtimine üle spetsiaalsele alamprogrammile ISR (Interrupt Service Routine), mis suudab käsitleda katkestuse tekitatud tingimusi.
Mis on katkestus?
Mõiste Katkestus on tavaliselt reserveeritud riistvaraliste katkestuste jaoks. Need on välistest riistvarasündmustest põhjustatud programmijuhtimise katkestused. Siin tähendab väline protsessori välist. Riistvarakatkestused tulevad tavaliselt paljudest erinevatest allikatest, nagu taimerikiip, välisseadmed (klaviatuurid, hiir jne), I/O-pordid (jada-, paralleel- jne), kettaseadmed, CMOS-kell, laienduskaardid (helikaart, video). kaart jne). See tähendab, et mõne käivitava programmiga seotud sündmuse tõttu ei esine peaaegu kunagi riistvarakatkestusi. Näiteks võib selline sündmus, nagu kasutaja klahvivajutus klaviatuuril, või sisemine riistvarataimeri ajalõpp tõsta sellist katkestust ja teavitada protsessorit, et teatud seade vajab tähelepanu. Sellises olukorras peatab protsessor kõik, mida ta tegi (st peatab praeguse programmi), osutab seadmele vajalikku teenust ja naaseb tavaprogrammile. Kui ilmnevad riistvarakatkestused ja CPU käivitab ISR-i, on muud riistvarakatkestused keelatud (nt.g. 80 × 86 masinates). Kui teil on vaja muid riistvarakatkestusi ISR-i töötamise ajal, peate seda selgesõnaliselt tegema, tühjendades katkestuse lipu (koos juhistega sti). 80 × 86 masinates mõjutab katkestuse lipu kustutamine ainult riistvaralisi katkestusi.
Mis on lõks?
Lõksu võib tuvastada kui kontrolli üleandmist, mille algatab programmeerija. Mõistet Trap kasutatakse vaheldumisi terminiga Exception (mis on automaatselt ilmnev tarkvarakatkestus). Kuid mõned võivad väita, et lõks on lihts alt eriline alamprogrammi kutse. Seega kuuluvad need tarkvara poolt esile kutsutud katkestuste kategooriasse. Näiteks 80 × 86 masinates saab programmeerija kasutada lõksu algatamiseks käsku int. Kuna lõks on alati tingimusteta, kantakse juhtimine alati üle lõksuga seotud alamprogrammile. Täpne käsk, mis kutsub esile lõksu käsitsemise rutiini, on kergesti tuvastatav, kuna lõksu määramiseks kasutatakse selgesõnalist juhist.
Mis vahe on katkestuse ja lõksu vahel?
Katkestused on riistvaralised katkestused, samas kui lõksud on tarkvara poolt esile kutsutud katkestused. Riistvaraliste katkestuste esinemine keelab tavaliselt muud riistvarakatkestused, kuid see ei kehti lõksude puhul. Kui teil on vaja riistvarakatkestused keelata kuni lõksu teenindamiseni, peate katkestuse lipu selgesõnaliselt kustutama. Ja tavaliselt mõjutab arvuti katkestuse lipp (riistvara) katkestusi, mitte lõksu. See tähendab, et selle lipu puhastamine ei hoia lõksu ära. Erinev alt lõksudest peaksid katkestused säilitama protsessori eelmise oleku.