Procesora pārtraukumi: definīcija, veidi un darbības princips

Uzzini, kas ir procesora pārtraukumi, to veidi un darbības princips — praktiski piemēri, aparatūras un programmatūras signāli, prioritātes un apstrāde.

Autors: Leandro Alegsa

Pārtraukums ir gadījums, kad mikroprocesors veic kaut ko tādu, kas tam nav uzdots, jo notiek kaut kas tāds, kas nav paredzēts programmas uzdevumā. Pārtraukumi visbiežāk notiek tāpēc, ka procesors saņem signālu no aparatūras, bet tie var nākt arī no programmatūras, kas darbojas kopā ar programmu. Starp daudzajām lietām, kas var izraisīt pārtraukumus, ir taustiņu nospiešana uz tastatūras, iebūvētā taimera ieslēgšanās, datu pārsūtīšana vai jebkurš cits notikums, kas prasa tūlītēju darbību no procesora. Pārtraukumi var notikt jebkurā laikā, kad procesors izpilda programmu, neatkarīgi no tā, kurā programmas avota koda vietā tas atrodas.

Kas ir pārtraukums — precizējums

Pārtraukums (interrupt) ir mehānisms, kas ļauj aparatūrai vai programmatūrai pieprasīt procesora uzmanību ārpus parastās programmas plūsmas. Tas nodrošina ātru reakciju uz notikumiem, negaidot, kamēr galvenā programma pārbaudīs šo notikumu (polling). Pārtraukumi ļauj efektīvāk izmantot procesora laiku un reaģēt uz laika jutīgiem notikumiem.

Pārtraukumu veidi

  • Aparatūras pārtraukumi (hardware interrupts) — tos ģenerē perifērijas ierīces (piem., tastatūra, tīkls, diskālais kontrolieris, DMA). Parasti signāls nonāk pie procesora vai speciāla kontroliera (PIC, APIC).
  • Programmatūras pārtraukumi (software interrupts) — tos izraisa izpildīta komanda vai sistēmas izsaukums (piem., system call), lai veiktu pakalpojumus vai pārslēgtu privileģiju līmeni.
  • Izņēmumi (exceptions) — sinhroni notikumi, kas rodas noteiktu instrukciju izpildes laikā (piem., dalījums ar nulli, lapu kļūda). Bieži tiek apstrādāti līdzīgi pārtraukumiem, taču ir saistīti ar pašas programmas darbību.
  • Maskējami un nemaskējami pārtraukumi — daži pārtraukumi var tikt īslaicīgi atspējoti (maskēti), bet kritiski notikumi (piem., strāvas kļūmes signāls) var būt nemaskējami un piespiež tūlītēju apstrādi.

Kā darbojas pārtraukumu apstrāde — soļi

  • Notikuma konstatēšana: ierīce vai programmas komanda ģenerē pārtraukuma signālu.
  • Atskaitīšana/atzīšana (acknowledge): kontrolieris/procesors saņem signālu un nosaka, kurš pārtraukums ir saņemts.
  • Konteksta saglabāšana: procesors automātiski vai programmatūras līmenī saglabā svarīgus reģistrus un programmas skaitītāja vērtību, lai pēc apstrādes varētu atsākt izpildi.
  • ISR izsaukšana: tiek pāriets uz atbilstošu pārtraukuma apstrādes funkciju (Interrupt Service Routine), izmantojot norādes no pārtraukumu tabulas (vector table).
  • Apstrāde: ISR veic nepieciešamās darbības — nolasīt datus, atiestatīt ierīces stāvokli, paziņot augšējām slānēm.
  • Konteksta atjaunošana un atgriešanās: pēc apstrādes atjauno iepriekšējo izpildes stāvokli un turpina programmas izpildi.

Tehniskie aspekti un elementi

  • Pārtraukumu vektoru tabula: vieta atmiņā, kur glabājas norādes uz katra pārtraukuma apstrādes rutīnām.
  • Prioritātes un iekļaušana: vairākus pārtraukumus var hierarhiski apstrādāt pēc prioritātēm; augstāka prioritāte var pārtraukt zemākas prioritātes ISR (nesting).
  • Latence: laiks no notikuma parādīšanās līdz ISR sākumam — ietver signāla pārnešanas, maskēšanas, konteksta saglabāšanas un citu darbību laiku. Zema latence ir svarīga reālā laika sistēmās.
  • Debauns/filtrēšana: īpaši aparatūras signāli var radīt troksni (piem., mehāniskas pogas), tāpēc lieto debauns ķēdes vai programmatūras filtrus.

Praktiskas pieejas programmētājiem

  • Minimizēt darbu ISR: ISR vajadzētu darīt pēc iespējas īsāku — tikai ātra apstrāde un datu saglabāšana; smagāka apstrāde jādeleģē uz augstāka līmeņa pavedieniem vai darba rindām (deferred work).
  • Nebloķēt un neizmēģināt ilgstošas operācijas: ISR nedrīkst gaidīt I/O vai izmantot bloķējošas funkcijas.
  • Sinhronizācija: izmantojiet atbilstošus mehānismus (spinlock, atomiskas operācijas), lai piekļūtu koplietojamiem resursiem, jo ISR var tikt izsaukts asinhroni.
  • Pareiza maskēšana/atslēgšana: rūpīgi plānojiet, kad atļaut vai aizliegt konkrētus pārtraukumus, lai izvairītos no konkurences vai infinito gaidīšanu.

Piemēri

  • Tastatūras taustiņa nospiešana — aparatūras pārtraukums, kas liek OS nolasīt kodu no tastatūras kontroliera.
  • Taimera pārtraukums — periodiski tiek izsaukts, lai izpildītu laika bāzētas darbības (piem., plānotājs).
  • DMA pabeigšana — ierīce brīdina, ka dati ir pārvietoti, un jāapstrādā pabeigšanas statuss.
  • Programmatūras pārtraukums / sistēmas izsaukums — programma pieprasa OS pakalpojumu (failu lasīšana, rakstīšana utt.).

Priekšrocības un izaicinājumi

  • Priekšrocības: efektīva procesora laika izmantošana, ātra reakcija uz notikumiem, mazāks enerģijas patēriņš salīdzinājumā ar nepārtrauktu pārbaudi (polling).
  • Izaicinājumi: sarežģīta sinhronizācija, potenciāla ISR pārsloga (interrupt storm), grūtības nodrošināt deterministisku uzvedību reālā laika sistēmās, jāoptimizē latence.

Noslēgumā

Pārtraukumi ir fundamentāls mehānisms mūsdienu datoru un iebūvēto sistēmu darbībā. Pareiza pārtraukumu dizaina un apstrādes īstenošana ļauj iegūt ātru, efektīvu un reaģējošu sistēmu, taču prasa uzmanību prioritātēm, sinhronizācijai un konteksta pārvaldībai.

Šajā diagrammā parādīts, kas notiek, kad tiek izsaukts pārtraukums.Zoom
Šajā diagrammā parādīts, kas notiek, kad tiek izsaukts pārtraukums.

Kā darbojas pārtraukumi

Par aparatūras vai programmatūras izsaukumu uz pārtraukumu (tā saukto pārtraukuma pieprasījumu jeb IRQ) rūpējas procesora "pārtraukuma apstrādātājs" vai "pārtraukuma apkalpošanas rutīna" (ISR). Tas to, ko tas dara attiecīgajā brīdī, ievieto kaudzē un pēc tam izpilda noteiktas instrukcijas, kas sistēmas vārdā veic noteiktu uzdevumu, kuram nav jābūt programmas, ko tas veic, sastāvdaļai. Kad ISR ir pabeidzis izpildīt instrukcijas, ISR paņem atpakaļ to, ko tas ir ielicis kaudzē, un turpina to, ko tas darīja pirms pārrāvuma rašanās.

Daudzi mūsdienu procesoru pārtraukšanas kontrolieri izmanto pārtraukšanas vektoru, lai šķirotu pārtraukumus, pamatojoties uz to, no kurienes tie nāk, kā arī citiem veidiem. Vektors parasti satur kodu, kas jāizpilda, kad notiek pārtraukums. ISR parasti ir atbildīgi par pārtraukuma apstrādi jeb "apkalpošanu", kā arī par paša pārtraucēja uzturēšanu darba kārtībā.

Pārtraucēju izmantošana

  • Uzdevumu aktivizēšana regulāros intervālos
  • Ārējās ierīces apkalpošana, kas var notikt jebkurā laikā.
  • Sinhronās aptaujas atcelšana
  • Operētājsistēmas (OS) darbības aktivizēšana.

Jautājumi un atbildes

J: Kas ir pārtraukums?


A: Pārtraukums ir mikroprocesora darbība, kas ārēju notikumu dēļ nav daļa no izpildāmās programmas.

J: Kas visbiežāk izraisa pārtraukumus procesorā?


A: Pārtraukumi procesorā visbiežāk rodas tāpēc, ka tiek saņemti signāli no aparatūras.

J: Vai pārtraukumus var izraisīt programmatūra?


A: Jā, pārtraukumus var izraisīt arī programmatūra, kas darbojas paralēli izpildāmajai programmai.

J: Uzskaitiet dažus notikumu piemērus, kas var izraisīt pārtraukumu.
A: Notikumu piemēri, kas var izraisīt pārtraukumu, ir taustiņu nospiešana uz tastatūras, taimera izslēgšanās un datu pārsūtīšana.

Vai pārtraukums ir atkarīgs no tā, kur tiek izpildīta programma?


A: Nē, pārtraukumi var rasties jebkurā programmas izpildes laikā neatkarīgi no tā, kurā programmas avota koda vietā tā atrodas.

J: Vai mikroprocesoram pārtraukums ir vēlams notikums?


A: Pārtraukumi mikroprocesoriem parasti ir nevēlami, jo tie traucē programmas izpildi un prasa tūlītēju uzmanību.

J: Kā mikroprocesors reaģē uz pārtraukumu?


A.: Mikroprocesors uz laiku pārtrauc izpildāmās programmas izpildi un izpilda pārtraukuma apkalpošanas rutīnu (ISR), lai apstrādātu pārtraukumu, pirms atgriežas pie izpildāmās programmas.


Meklēt
AlegsaOnline.com - 2020 / 2025 - License CC3