Pertraukimas

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką
Intel 4040 buvo pirmasis pertraukimus palaikantis mikroprocesorius

Pertraukimas (angl. interrupt) – programos ar įrenginio įvykdytas veiksmas, kurio metu nutraukiamas einamosios programos vykdymas ir valdymas perduodamas pertraukimo apdirbėjui (angl. interrupt handler). Atlikus tam tikrus veiksmus, vykdymas grąžinamas ankstesnei programai.

Pertraukimo logika panaši į gyvenimiškus atvejus: žmogus daro pietus (pagrindinė programa). Suskamba telefonas (pertraukimas). Žmogus pakelia ragelį ir kalbasi, kol padeda ragelį (pertraukimo apdirbėjas). Galų gale, žmogus toliau gamina valgį (tęsiama pagrindinė programa).

Pertraukimai paprastai sukeliami išorinių prietaisų (aparatiniai pertraukimai). Kai kada pertraukimais vadinamos ir iš esmės paprogramės kvietimo komandos (programiniai pertraukimai). Abiem atvejais aparatiškai arba programiškai išsaugoma visa tuo metu vykdomo proceso informacija (įvairių procesoriaus registrų reikšmės), dažniausiai perkeliant jas į steką. Aptarnavus pertraukimą, šios reikšmės atkuriamos.

Pertraukimų taikymas[taisyti | redaguoti kodą]

Pertraukimai neretai naudojami į išorinius įvykius reaguoti (pelės pajudėjimas, klavišo paspaudimas). Jie tinka foniniam informacijos perdavimui (šiuo atveju pertraukimas reiškia jog atvyko arba reikalingi pateikti nauji duomenys). Pertraukimai taip pat gali tiesiog vykti numatytu laiku (taimerio pertraukimai). Tokių pertraukimų pagalba ir vieno procesoriaus kompiuteris gali vienu metu vykdyti kelias užduotis (nors kiekviena jų tuomet vykdoma lėčiau).

Maskuojami ir nemaskuojami pertraukimai[taisyti | redaguoti kodą]

Jei vykdant kokią nors kritinę programos dalį pertraukimai nepageidaujami (tarkim, komandų seka turi būti įvykdyta labai greitai ir būtinai iki galo), pertraukimus galima laikinai uždrausti. Baigus vykdyti kritinę dalį, juos vėl būtina leisti, nes pertraukimai reikalingi normaliam sistemos darbui. Pertraukimas, kurio negalima uždrausti, vadinamas nemaskuojamu. Toks paprastai būna „pradinio nustatymo“ pertraukimas, kuris senesnio tipo kompiuteriuose būdavo aktyvuojamas specialiu mygtuku, paprastai pažymėtu anglišku žodžiu Reset. Kadangi toks pertraukimas sukelia daug sumaišties operacinės sistemo darbe, juo naudotis niekada nebuvo patartina (šiuo metu daugelis modeliu jo ir nebeturi). Nemaskuojamas pertraukimas dažniausiai reikalingas dėl programavimo klaidų (ar net ir tyčinio kenkimo) „pakibusiai“, į kitus signalus nereaguojančiai sistemai iš naujo paleisti.

Pakartotinai įeinamas kodas[taisyti | redaguoti kodą]

Jei aparatinis pertraukimas įvyko vykdant instrukcijas kokioje nors paprogramių bibliotekoje, biblioteka gali palaikyti arba nepalaikyti galimybę iš petraukimą aptarnaujančio kodo ir vėl kviesti tą pačią ar kitą šios bibliotekos paprogramę. Nagrinėjamame pavyzdyje tai būtų galimybė pokalbio metu pagaminti kitą valgį pagal telefonu duodamus nurodymus (gali trukdyti tai, jog viryklės rakandai užimti laikinai paliktos ankstesnės užduoties).

Biblioteka, kurią galima kviesti aptarnaujant net ir jos kodą vykdant įvykusius pertraukimus, vadinama įeinama pakartotinai (angl. reenterable). MS-DOS, pavyzdžiui, pakartotinai įeinama nebuvo (non reenterable).