Prekinitve in izjeme


Kaj so prekinitve?

Windows 2000 poznajo dve vrsti dogodkov, ki spremenijo potek izvajanja ukazov. Prekinitve(interrupts) in izjeme(exception).

Prekinitve so asinhroni dogodki, ki niso povezani s tem, kar procesor trenutno izvaja. Prekinitve najpogosteje spro�ijo vhodno/izhodne enote, ura..... Lahko so omogo�ene ali pa onemogo�ene.

Izjeme pa so sinhroni dogodki, ki so povezani s trenutnim programom. Primeri izjem: deljenje z ni�, kr�enje pomnilni�kega prostora....

Obe vrsti prekinitev lahko spro�i tako strojna oprema kot programska oprema. "Bus error exception" je primer izjeme, ki jo je spro�ila strojna oprema. Deljenje z ni� pa je primer izjeme, ki jo je spro�il program. Prav tako lahko vzhodno/izhodna naprava spro�i prekinitev ali pa samo jedro (kernel) spro�i prekinitev (APC ali DPC).

Pod pastjo razumemo mehanizem, s katerim procesor ob pojavi prekinitve ali izjeme ujame teko�o nit in presko�i iz uporabni�kega v sistemski re�im ter sko�i na izvajanje kode na neki vnaprej definirani  lokaciji.

Delovanje prekinitev in izjem?

Ko se zgodi dogodek, ki povzro�i prekinitev izjemo ali pa klic sistemskega servisa, prevzame nadzor rokovalnik pasti(trap handler). Le ta za�asno prepove nove prekinitve. Tvori okvir pasti (trap frame), v katerega shrani stanje prekinjene niti in omogo�i prekinitve. Glede na vrsto zahteve, ki je povzro�ila klic rokovalnika pokli�e ustrezen modul. �e je bila vzrok prekinitev potem pokli�e prekinitveni distributor. V primeru sistemskega klica prepusti nadzor sistemskemu distributorju. V primeru ostalih pasti pa prepusti izvajanje distributorju izjem.


 
 

Aparaturne prekinitve

Distributor prekinitev, ki je del rokovalnika pasti se torej odziva na prekinitve. Distibutor najprej ugotovi izvor prekinitve in potem prenese nadzor v zunanjo rutino ki potem servisira prekinitev ali pa v notranjo kernel rutino. Zunanjo rutino morajo zagotavljati gonilniki naprave, notranje rutine pa zagotavlja kernel sam.

Razli�ni procesorji prepoznajo razli�no veliko in raazli�ne tipe prekinitev. Kernel definira tabelo IRQL (interrupt request level). V tej tabeli so urejene prekinitve po prioriteti. Vi�ja prekinitev ima vi�jo prioriteto. Procesor ima svoj kazalec IRQL, ki ka�e v to tabelo in se spreminja glede na prekinitve. Prekinitve, ki le�ijo pod tem kazalcem so onemogo�ene, dokler se kazalec IRQL ne pomakne navzdol.
 
 


 
 

Podobno vlogo, kot jo ima pri nekaterih drugih operacijskih sistemih prekinitveni vektor, igra pri Win 2000  distribucijska tabela prekinitev IDT (Interrupt Dispatch Table). IRQL procesorja slu�i kot kazalec tudi v to tabelo. IDT je  struktura, na katero ka�e processor control region(PCR).

Interaktivni prikaz delovanja aparaturnih prekinitev

Pri ve�procesorskih sistemih imamo lo�eno tabelo IDT.
 

Prekinitve za klice zamaknjenih procedur DPC (deferred procedure call)

 
Periferne naprave povzro�ajo aparaturne prekinitve. Jedro  pa tvori programske prekinitve. Posebnost Win 2000 so prekinitve za klice zamaknjenih procedur (DPC, Deferred Procedure Call). DPC so sistemske funkcije, katerih izvedba ima ni�jo prednost kot obravnava aparaturnih prekinitev in  lahko malo po�aka. Tipi�na uporaba DPC je v gonilnikih aparaturnih naprav. Pri teh po vsaki aparaturni prekinitvi sistem v servisni rutini (ISR) samo shrani stanje naprave, vse ostalo pa opravi ustrezna DPC (tudi ta v sistemskem (kernel) na�inu), ko bo ra�unalnik za to na�el �as.

Sistem DPC je predstavljen z DPC objektom, kateri vsebuje naslov sistemske funkcije, ki jo bo klical kernel, ko bo izvajal DPC prekinitev. DPC objekti shranjeni v vrsti in �akajo, da se bo zgodila DPC prekinitev. V vrsto najpogosteje nalagajo goniliniki naprav, ki se izvajajo z vi�jim IRQL-om procedure, ki se lahko izvedejo kasneje. Ko IRQL pade pod nivo DPC kernel sam spro�i DPC prekinitev in zamaknjene procedure se za�nejo izvajati v sistemskem na�inu.

Interaktivni prikaz klicev DPC

 

Prekinitve za klice asinhronih procedur APC (asynchronous procedure call)

 
Podoben mehanizem so klici asinhronih procedur (APC, Asynchronous Procedure Call), ki jih lahko izvajamo bodisi v sistemskem, bodisi v uporabni�kem re�imu. V razliko od DPC se APC izvajajo v naslovnem prostoru dolo�ene uporabni�ke niti. Uporabljamo jih na primer za zaklju�ek neke vhodno-izhodne operacije, ki jo je zahtevala neka aplikacija.

Sama koda tako ISR, kot DPC in APC je obi�ajno del nekega gonilnika naprave (device driver), podatkovni del, ki je spravljen (vsaj za DPC in APC) v obliki ustreznega (DPC oziroma APC) objekta.

APC zagotavljajo izvedbo code v  kontekstu posamezne uporabni�ke niti. Prav tako so predstavljene z APC objektom in �akajo na izvr�itev v APC vrsti. Za razliko od DPC, ki ima eno vrsto za cel sistem, ima vsaka nit svojo APC vrsto. Ko zaprosimo za uvrstitev APC procedure v vrsto, kernel sam uvrsti vrsto v nit, v kateri se bo izvajala. APC procedure lahko izvajamo v uporabni�kem ali pa sistemskem na�inu. Najve�krat se uporabljajo, da se zapi�e I/O informacija v pravo nit.


Programske prekinitve

 
�e je do programske prekinitve pri�lo v sistemskem re�imu (kernel mode), razvr��evalnik izjem (exception dispacher) enostavno pokli�e ustrezno rutino. 

�e pa pride do izjeme v uporabni�kem re�imu, kli�e ta razvr��evalnik ustrezna vrata (debugger port ali exception port). Tako so na primer realizirane prekinitvene to�ke (breakpoints) razhro��evalnikov.