Pertraukti prieš Spąstus
Bet kuriame kompiuteryje, normaliai vykdant programą, gali įvykti įvykių, kurie gali laikinai sustabdyti centrinį procesorių. Tokie įvykiai yra vadinami pertraukimais. Trukdžius gali sukelti programinės įrangos arba aparatinės įrangos gedimai. Techninės įrangos trikdžiai vadinami (paprasčiausiai) pertraukimais, o programinės įrangos trikdžiai - išimtimis arba spąstais. Išimtis yra automatiškai sugeneruotas programinės įrangos pertraukimas, o spąstai - programinės įrangos inicijuojamas pertraukimas. Iškėlus pertraukimą (programinę ar techninę įrangą), valdymas perkeliamas į specialią paprogramę, vadinamą ISR (pertraukiamų paslaugų rutiną), kuri gali valdyti tas sąlygas, kurias sukelia pertraukimas.
Kas yra pertraukimas?
Terminas „nutraukti“ paprastai skirtas aparatinės įrangos pertraukimams. Tai yra programos valdymo pertraukimai, kuriuos sukelia išoriniai aparatūros įvykiai. Čia išorinės priemonės, nepriklausančios procesoriui. Techninės įrangos trikdžiai dažniausiai gaunami iš daugelio skirtingų šaltinių, tokių kaip laikmačio lustas, periferiniai įrenginiai (klaviatūros, pelė ir kt.), Įvesties / išvesties prievadai (nuoseklieji, lygiagrečiai ir tt), diskų įrenginiai, CMOS laikrodis, išplėtimo kortelės (garso plokštė, vaizdo įrašas kortelė ir kt.). Tai reiškia, kad aparatinės įrangos trikdžiai beveik niekada neįvyksta dėl įvykio, susijusio su vykdomąja programa. Pvz., Įvykis, pavyzdžiui, vartotojo klaviatūros paspaudimas arba vidinės aparatinės įrangos laikmačio laikas, gali sukelti tokį trikdymą ir gali pranešti centriniam procesoriui, kad tam tikram įrenginiui reikia skirti šiek tiek dėmesio. Tokioje situacijoje kaip centrinis procesorius sustabdys viską, ką darė (t. Y. Pristabdo dabartinę programą), teiks įrenginiui reikalingas paslaugas ir grįš į įprastą programą. Kai nutrūksta aparatinė įranga ir CPU pradeda ISR, kiti aparatūros trikdžiai išjungiami (pvz., 80 × 86 mašinose). Jei jums reikia kitų aparatinės įrangos trikdžių, kai veikia ISR, turite tai padaryti aiškiai nuvalydami pertraukimo vėliavą (su sti instrukcija). 80 × 86 mašinose pašalinus pertraukimo žymą, tai turės įtakos tik aparatinės įrangos trikdžiams.
Kas yra spąstai?
Spąstus galima identifikuoti kaip valdymo perdavimą, 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 tvirtinti, kad spąstai yra tiesiog specialus paprogramės iškvietimas. Taigi jie patenka į programinės įrangos nutraukiamų kategorijų sąrašą. Pavyzdžiui, 80 × 86 mašinose programuotojas gali naudoti int nurodymas inicijuoti spąstus. Kadangi spąstai visada yra besąlyginiai, valdymas visada bus perkeltas į su spąstais susijusį paprogramę. Tiksli instrukcija, pagal kurią naudojama spąstų tvarkymo rutina, yra lengvai atpažįstama, nes spąstams nurodyti naudojama aiškus nurodymas.
Kuo skiriasi „Interrupt“ ir „Trap“?
Trukdžiai yra aparatinės įrangos pertraukimai, o spąstai - programinės įrangos nutraukiami trikdžiai. Aparatinės įrangos trikdžiai dažniausiai išjungia kitus aparatūros pertraukimus, tačiau tai netaikoma spąstams. Jei jums reikia uždrausti aparatūros pertraukimus, kol nebus pateiktas spąstas, turite aiškiai išvalyti pertraukimo vėliavą. Paprastai pertraukimo vėliava kompiuteryje paveikia (aparatinės įrangos) trikdžius, o ne spąstus. Tai reiškia, kad išvalius šią vėliavą nebus išvengta spąstų. Priešingai nei spąstai, pertraukimai turėtų išlaikyti ankstesnę procesoriaus būseną.