Sistemski klic proti prekinitvi
Tipičen procesor izvaja ukaze eno za drugo. Lahko pa pride do primerov, ko se mora procesor začasno ustaviti in obdržati trenutno navodilo ter izvesti kakšen drug program ali segment kode (ki prebiva na nekem drugem mestu). Po tem se procesor vrne v normalno izvajanje in nadaljuje od tam, kjer je končal. Takšni priložnosti sta sistemski klic in prekinitev. Sistemski klic je klic podprograma, vgrajenega v sistem. Prekinitev je prekinitev krmiljenja programa, ki jo povzročijo dogodki zunanje strojne opreme.
Kaj je sistemski klic?
Sistemski klici zagotavljajo programom, ki se izvajajo v računalniku, vmesnik za komunikacijo z operacijskim sistemom. Ko mora program zahtevati storitev (za katero sam nima dovoljenja) od jedra operacijskega sistema, uporabi sistemski klic. Procesi na ravni uporabnika nimajo enakih dovoljenj kot procesi, ki neposredno komunicirajo z operacijskim sistemom. Na primer, za komunikacijo z zunanjo V/I napravo ali za interakcijo s katerim koli drugim procesom mora program uporabljati sistemske klice.
Kaj je prekinitev?
Med običajnim izvajanjem računalniškega programa lahko pride do dogodkov, ki lahko povzročijo začasno zaustavitev CPE. Takšni dogodki se imenujejo prekinitve. Prekinitve lahko povzročijo napake programske ali strojne opreme. Strojne prekinitve imenujemo (preprosto) prekinitve, programske prekinitve pa izjeme ali pasti. Ko se sproži prekinitev (programska ali strojna oprema), se nadzor prenese na poseben podprogram, imenovan ISR (Interrupt Service Routine), ki lahko obravnava pogoje, ki jih sproži prekinitev.
Kot je omenjeno zgoraj, je izraz prekinitev običajno rezerviran za prekinitve strojne opreme. So prekinitve krmiljenja programa, ki jih povzročijo dogodki zunanje strojne opreme. Tukaj zunanji pomeni zunaj CPE. Prekinitve strojne opreme običajno prihajajo iz številnih različnih virov, kot so časovnik, periferne naprave (tipkovnice, miške itd.), V/I vrata (zaporedna, vzporedna itd.), diskovni pogoni, ura CMOS, razširitvene kartice (zvočna kartica, video kartico itd.). To pomeni, da do prekinitev strojne opreme skoraj nikoli ne pride zaradi nekega dogodka, povezanega z izvajajočim se programom. Na primer, dogodek, kot je pritisk tipke na tipkovnici s strani uporabnika, ali iztekanje notranjega časovnika strojne opreme lahko sproži tovrstno prekinitev in lahko obvesti CPE, da določena naprava potrebuje nekaj pozornosti. V takšni situaciji bo CPE ustavil vse, kar je počel (tj. zaustavil trenutni program), zagotovil storitev, ki jo zahteva naprava, in se vrnil k običajnemu programu.
Kakšna je razlika med sistemskim klicem in prekinitvijo?
Sistemski klic je klic podprograma, vgrajenega v sistem, medtem ko je prekinitev dogodek, ki povzroči, da procesor začasno zadrži trenutno izvajanje. Vendar je ena velika razlika ta, da so sistemski klici sinhroni, medtem ko prekinitve niso. To pomeni, da se sistemski klici zgodijo ob določenem času (običajno ga določi programer), vendar lahko do prekinitev pride kadar koli zaradi nepričakovanega dogodka, kot je pritisk tipke na tipkovnici s strani uporabnika. Zato si mora procesor, kadar koli pride do sistemskega klica, zapomniti, kam naj se vrne, v primeru prekinitve pa si mora zapomniti kraj, kamor se mora vrniti, in stanje sistema. Za razliko od sistemskega klica prekinitev običajno nima nobene zveze s trenutnim programom.