Pertraukimas prieš spąstus
Bet kuriame kompiuteryje, normaliai vykdant programą, gali būti įvykių, dėl kurių CPU gali laikinai sustoti. Tokie įvykiai vadinami pertraukimais. Pertraukimus gali sukelti programinės arba aparatinės įrangos gedimai. Aparatinės įrangos pertraukimai vadinami (paprasčiausiai) pertraukimais, o programinės įrangos pertraukimai vadinami išimtimis arba spąstais. Išimtis yra automatiškai sugeneruotas programinės įrangos pertraukimas, o Trap yra programinės įrangos iškviestas pertraukimas, kurį inicijuoja programuotojas. Pakėlus pertraukimą (programinę ar aparatinę įrangą), valdymas perkeliamas į specialią paprogramę, vadinamą ISR (Interrupt Service Routine), kuri gali tvarkyti sąlygas, kurias sukelia pertraukimas.
Kas yra pertraukimas?
Terminas „Pertraukimas“paprastai yra skirtas aparatinės įrangos pertraukimams. Tai yra programos valdymo pertraukimai, kuriuos sukelia išoriniai aparatūros įvykiai. Čia išorinis reiškia išorinį procesorių. Aparatinės įrangos pertraukimai paprastai gaunami iš daugelio skirtingų š altinių, tokių kaip laikmačio lustas, išoriniai įrenginiai (klaviatūros, pelė ir kt.), I/O prievadai (nuoseklieji, lygiagrečiai ir kt.), diskų įrenginiai, CMOS laikrodis, išplėtimo plokštės (garso plokštė, vaizdo įrašas). kortelė ir kt). Tai reiškia, kad aparatinės įrangos pertraukimai beveik niekada neįvyksta dėl kažkokio įvykio, susijusio su vykdomąja programa. Pavyzdžiui, toks įvykis kaip vartotojo klaviatūros paspaudimas arba vidinis aparatinės įrangos laikmačio laikas gali padidinti tokio pobūdžio pertraukimą ir informuoti centrinį procesorių, kad tam tikram įrenginiui reikia skirti tam tikrą dėmesį. Esant tokiai situacijai, centrinis procesorius sustabdo tai, ką darė (t. y. pristabdo esamą programą), suteiks įrenginiui reikalingą paslaugą ir grįš į įprastą programą. Kai įvyksta aparatinės įrangos pertraukimai ir CPU paleidžia ISR, kiti aparatinės įrangos pertraukimai išjungiami (pvz.g. 80×86 mašinose). Jei jums reikia kitų aparatinės įrangos pertraukimų, kai veikia ISR, turite tai padaryti aiškiai išvalydami pertraukimo vėliavėlę (su sti instrukcija). 80 × 86 įrenginiuose pertraukimo vėliavėlės išvalymas turės įtakos tik aparatinės įrangos pertraukimams.
Kas yra spąstai?
A Spąstai gali būti identifikuojami kaip valdymo perdavimas, kurį inicijuoja programuotojas. Terminas „Spąstai“vartojamas pakaitomis su terminu „Išimtis“(tai yra automatiškai atsirandantis programinės įrangos pertraukimas). Tačiau kai kurie gali ginčytis, kad spąstai yra tiesiog specialus paprogramės skambutis. Taigi jie patenka į programinės įrangos iškviečiamų pertraukimų kategoriją. Pavyzdžiui, 80 × 86 mašinose programuotojas gali naudoti instrukciją, kad inicijuotų spąstus. Kadangi spąstai visada yra besąlyginiai, valdymas visada bus perkeltas į paprogramę, susijusią su spąstu. Tiksli instrukcija, kuri iškviečia spąstų tvarkymo rutiną, yra lengvai atpažįstama, nes spąstams nurodyti naudojama aiški instrukcija.
Kuo skiriasi Interrupt ir Trap?
Pertraukimai yra aparatinės įrangos pertraukimai, o spąstai yra programinės įrangos iššaukiami pertraukimai. Atsiradus aparatinės įrangos pertraukimams, paprastai išjungiami kiti aparatinės įrangos pertraukimai, tačiau tai netinka spąstams. Jei reikia neleisti aparatinės įrangos pertraukimų, kol nebus pateiktas spąstai, turite aiškiai išvalyti pertraukimo vėliavėlę. Ir paprastai pertraukimo vėliavėlė kompiuteryje veikia (aparatinės įrangos) pertraukimus, o ne spąstus. Tai reiškia, kad šios vėliavėlės išvalymas neapsaugos spąstų. Skirtingai nuo spąstų, pertraukimai turėtų išlaikyti ankstesnę procesoriaus būseną.