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).
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.
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. |

