Pasti in prekinitve

Kaj se bomo naučili v tem poglavju?

 

Spoznali bomo pomemben mehanizem, ki omogoča pisanje in izvajanje sodobnih operacijskih sistemov, interakcijo med perifernimi napravami računalnika z njegovo centralno procesno enoto, pa tudi pomoč operacijskega sistema aplikativnim programom. Vse to se sicer dogaja na strojnem nivoju, navadnemu programerju pa je to dogajanje skrito, čeprav ga posredno uporablja.

 

 

Podobnost med podprogrami in pastmi

 

Prekinitve in pasti pozna danes praktično vsak računalnik, programerji pa se s tem, vsaj na višjem nivoju, neposredno ne srečajo. Sodobni računalniki imajo danes navezane različne periferne naprave. Vemo tudi, da lahko na enem računalniku hkrati teče po več programov. Kako je to možno, če pa imamo pogosto en sam programski števec (kazalec na naslednji ukaz)?
 
Trik je deloma podoben delovanju podprogramov. Za podprograme smo rekli, da se pri klicu podprograma (torej zaporedja ukazov, ki ga sestavljajo) naš program za hip prekine. Po koncu podprograma pa se nadaljuje na mestu prekinitve, kot da se ne bi nič zgodilo.

 

Stop  start  CPE

Naslednji ukaz
Programski števec  = 0


Skrij ali prikaži komentarje


Ukaz prikaži kot:
mnemonik, desetiško, dvojiško


 
Če ima računalnik več perifernih naprav, lahko vsaka od teh zahteva, da ji računalnik prisluhne in torej izvede "njeno" zaporedje ukazov. Temu , "njenemu" zaporedju ukazov pravimo "prekinitvena servisna rutina". Pravkar izvajani program mora torej prekiniti in ga lahko nadaljuje šele, ko je dano periferno napravo "servisiral".

Bistvena razlika s podprogrami je v tem, da program "ne ve", kdaj bo prekinjen. Torej mora za to, da se bo lahko kasneje nadaljeval, kot da nič ni bilo, poskrbeti tisti, ki ga prekine. To pa je CPE, ki dobi zahtevek po prekinitvi od dane periferne naprave.


Tako pri podprogramih kot pri prekinitvah je postopek v računalniku podoben: na sklad se začasno shrani trenutna vrednost programskega števca, pa tudi vsebine delovnih registrov, ki jih uporablja podprogram oziroma prekinitvena rutina.


Demonstracija strojne prekinitve:

 

Poženi program. Kadarkoli med izvajanjem programa klikni na  simulirano tipkovnico.

Izvajani program bo prekinjen.
Izvedla  se bo prekinitvena rutina.
Po izvedbi rutine se bo program nadaljeval.

Stop  start  CPE

naslednji ukaz
Programski števec  = 0


Omogoči ali prepreči prekinitve

Skrij ali prikaži komentarje

Ukaz prikaži kot:
mnemonik, desetiško, dvojiško

Zanimivo je, da zna računalnik periferijam tudi preprečiti, da ga "motijo" s svojimi zahtevki. Praktično vsi računalniki poznajo ukaz "Enable interrupt" (EI) oziroma "Disable unterrupt" (DI).


Kaj pa pasti?

 

Kaj pa so takoimenovane "pasti"? Poleg aparaturnih prekinitev (prekinitev, povzročenih s strani periferij in računalniške ure) poznamo tudi "programske" prekinitve, ki jim pravimo tudi pasti (traps, software interrupts). Kot že samo ime pove, so to prekinitve, ki jih lahko povzročajo sami programi, obravnavajo pa se podobno, kot aparaturne prekinitve. Zakaj pa to potrebujemo? Na primer, če hoče računalnik izvesti kakšno nelegalno operacijo (kot je delitev z 0), bolj pogosto pa, če hočemo v našem programu zaprositi operacijski sistem za kakšno "storitev" (na primer vhodno-izhodno operacijo). Programske in aparaturne prekinitve so bistvene za delovanje sodobnih operacijskih sistemov, ki omogočajo navidezno sočasno izvajanje več programov.