Pertraukimai kompiuteryje: kas tai ir kaip veikia mikroprocesorius

Pertraukimas — tai momentas, kai mikroprocesorius atkreipia dėmesį į įvykį ir atlieka veiksmus, kurių jam nebuvo nurodyta vykdant dabartinę programą. Dažniausiai pertraukimai įvyksta, kai procesorius gauna signalą iš aparatinės įrangos, tačiau juos gali inicijuoti ir programinė įranga (pvz., sistemos kvietimai arba specialūs programiniai pertraukimai). Tarp dažniausių priežasčių yra klaviatūros klavišų paspaudimas, integruoto laikmačio suveikimas, duomenų perdavimas per įvesties/išvesties įrenginį arba bet koks kitas įvykis, dėl kurio procesorius turi tuoj pat imtis veiksmų — pertraukimai gali įvykti bet kuriuo metu, kai vykdoma programa, nesvarbu, kurioje programos šaltinio kodo vietoje ji yra.

Pertraukimo tipai

  • Aparatiniai (hardware) pertraukimai — siunčiami iš fizinių įrenginių (pvz., klaviatūros, tinklo plokštės, laikmačio).
  • Programiniai (software) pertraukimai — inicijuojami programos (pvz., sistemos kvietimas arba speciali instrukcija).
  • Išimtys (exceptions) — specialūs pertraukimai, sukelti procesoriaus klaidų ar būklių (pvz., dalybos iš nulio, puslapio klaida).
  • NEIšvengiami (non-maskable) pertraukimai — kritiniai signalai, kurių negalima užmaskuoti; ir maskuojami pertraukimai, kuriuos galima laikinai išjungti.

Kaip mikroprocesorius apdoroja pertraukimus — pagrindiniai žingsniai

  • Procesorius aptinka pertraukimo signalą (sinchroninį arba asinchroninį).
  • Užbaigia šiuo metu vykdomą instrukciją arba, priklausomai nuo architektūros, operaciją gali nutraukti beveik iš karto.
  • Išsaugo būseną (programos skaitiklį, statuso registrus ir svarbias registrų reikšmes) — tai vadinama konteksto išsaugojimu.
  • Nustato tinkamą pertraukimo tvarkytojo (angl. interrupt service routine, ISR) adresą, dažnai naudojant pertraukimo vektorių lentelę.
  • Perjungia į pertraukimo tvarkytoją ir įvykdo jį (dažniausiai trumpas, konkrečias užduotis atliekančias kodus).
  • Po tvarkytojo darbo siunčiamas signalas, kad pertraukimą baigta (End of Interrupt, EOI), atkuriamas kontekstas ir procesorius tęsia anksčiau vykdytą programą.

Svarbūs aspektai ir terminai

  • Prioritetai ir lizdavimas (nesting) — kai keli pertraukimai gali įvykti vienu metu, procesorius naudoja prioritetus; kai kuriomis sistemomis tvarkytojai gali būti "lizduojami" (gali būti pertraukiami aukštesnio prioriteto įvykių).
  • Latencija — laikas nuo signalo iki pertraukimo tvarkytojo pradžios. Kritinėse realaus laiko sistemose reikia mažos latencijos.
  • Pertraukimų vektorius — lentelė, kurioje saugomi pertraukimo tvarkytojų adresai; ji leidžia greitai nukreipti į atitinkamą tvarkytoją.
  • ISR geros praktikos — tvarkytojai turi būti trumpi, neturi blokuoti ilgai veikiančių operacijų ir paprastai tik signalizuoja aukštesniam lygmeniui (pvz., operacinei sistemai) atlikti sunkesnes užduotis.
  • Pertraukimai prieš tikrinimą (polling) — alternatyva pertraukimams yra periodinis įrenginių tikrinimas (polling). Pertraukimai paprastai efektyvesni ir reaguoja greičiau, kai įvykiai yra reti arba nereguliarūs.

Praktiniai pavyzdžiai

  • Klaviatūros klavišo paspaudimas siunčia pertraukimo signalą, kad sistema galėtų nuskaityti klavišo kodą ir įvesti simbolį į programą.
  • Laikmačio pertraukimai naudojami operacinėse sistemose planuoti užduotis (scheduling) arba skaičiuoti laiką.
  • Pertraukimai praneša apie duomenų perdavimo pabaigą (pvz., UART, tinklo ar DMA) — tai leidžia efektyviai tvarkyti įvestį/išvestį be nuolatinio tikrinimo.
  • Programiniai pertraukimai naudojami kaip sistemos kvietimai (syscalls) — programos iškviečia operacinės sistemos paslaugas specialiomis instrukcijomis.

Naudotojo ir programuotojo pastabos

  • Programuotojams svarbu tinkamai valdyti pertraukimus: užtikrinti, kad ISR būtų trumpi, saugoti ir atkurti reikalingus registrus, vengti ilgai trunkančių operacijų ISR kontekste.
  • Operacinės sistemos naudoja pertraukimus kaip pagrindą įvykių valdymui, įrenginių tvarkyklėms ir kontekstų keitimui tarp procesų.
  • Sistemos inžinieriai turi atsižvelgti į prioritetus, galimą pertraukimų kiekį ir latenciją projektuodami realaus laiko ar energijos taupymo sistemas.

Apibendrinant, pertraukimai yra pagrindinis mechanizmas, leidžiantis mikroprocesoriui reaguoti į išorinius ir vidinius įvykius greitai ir efektyviai — tai būtina tiek kasdienėms periferijų sąveikoms, tiek sudėtingesniems operacinių sistemų sprendimams.

Šioje diagramoje parodyta, kas vyksta, kai iškviečiamas pertraukimasZoom
Šioje diagramoje parodyta, kas vyksta, kai iškviečiamas pertraukimas

Kaip veikia pertraukikliai

Aparatinės ar programinės įrangos reikalavimu pertraukti (vadinamuoju pertraukos užklausa arba IRQ) rūpinasi procesoriaus "pertraukos tvarkyklė" arba "pertraukos aptarnavimo programa" (ISR). Ji į steką įrašo tai, ką tuo metu daro, ir tada vykdo tam tikras instrukcijas, pagal kurias sistemos vardu atlieka tam tikrą užduotį, kuri nebūtinai turi būti jos vykdomos programos dalis. Baigusi vykdyti instrukcijas, ISR pasiima atgal tai, ką įdėjo į steką, ir toliau tęsia tai, ką darė prieš įvykstant pertraukai.

Daugelyje šiuolaikinių procesorių pertraukimo valdiklių pertraukimo vektorius naudojamas pertraukimo vektoriui rūšiuoti, be kita ko, pagal tai, iš kur jis atėjo. Vektoriuje paprastai yra kodas, kuris turi būti vykdomas įvykus pertraukai. ISR paprastai yra atsakingi už pertraukimo tvarkymą arba "aptarnavimą", kartu su savęs palaikymu darbinėje būsenoje.

Pertraukiklių naudojimas

  • Užduočių paleidimas reguliariais intervalais
  • Išorinio įrenginio aptarnavimas, kuris gali įvykti bet kuriuo metu
  • Pašalinti sinchroninės apklausos poreikį
  • Operacinės sistemos (OS) veiksmų inicijavimas

Klausimai ir atsakymai

K: Kas yra pertraukimas?


Atsakymas: Pertraukimas - tai mikroprocesoriaus atliekamas veiksmas, kuris nėra vykdomos programos dalis dėl išorinių įvykių.

K: Dėl ko dažniausiai procesoriuje įvyksta pertrūkiai?


A: Dažniausiai pertraukimai procesoriuje atsiranda dėl signalų gavimo iš aparatinės įrangos.

K: Ar pertraukimus gali sukelti programinė įranga?


A: Taip, pertraukimus gali sukelti ir programinė įranga, kuri veikia lygiagrečiai su vykdoma programa.

K: Išvardykite keletą įvykių, kurie gali sukelti pertraukimą, pavyzdžių.
A: Įvykių, galinčių sukelti pertraukimą, pavyzdžiai: klaviatūros klavišų paspaudimas, laikmačio suveikimas ir duomenų perdavimas.

K: Ar pertraukimas priklauso nuo to, kur vykdoma programa?


A: Ne, pertraukimai gali įvykti bet kuriuo programos vykdymo metu, neatsižvelgiant į tai, kurioje programos kodo vietoje ji yra.

K: Ar pertraukimas yra pageidaujamas mikroprocesoriaus įvykis?


A: Paprastai pertraukimai yra nepageidaujami mikroprocesoriaus įvykiai, nes jie sutrikdo programos vykdymą ir reikalauja neatidėliotino dėmesio.

K: Kaip mikroprocesorius reaguoja į pertraukimą?


A: Mikroprocesorius laikinai sustabdo vykdomą programą ir, prieš grįždamas prie vykdomos programos, įvykdo pertraukos aptarnavimo procedūrą (ISR), kad sutvarkytų pertrauką.

AlegsaOnline.com - 2020 / 2025 - License CC3