Systémové volanie verzus prerušenie
Typický procesor vykonáva inštrukcie jeden po druhom. Môžu však nastať prípady, keď sa procesor musí dočasne zastaviť a podržať aktuálnu inštrukciu a vykonať nejaký iný program alebo segment kódu (nachádzajúci sa na inom mieste). Potom sa procesor vráti k normálnemu vykonávaniu a pokračuje tam, kde skončil. Systémové volanie a prerušenie sú takými príležitosťami. Systémové volanie je volanie podprogramu zabudovaného v systéme. Prerušenie je prerušenie ovládania programu spôsobené udalosťami externého hardvéru.
Čo je systémové volanie?
Systémové volania poskytujú programom spusteným na počítači rozhranie na komunikáciu s operačným systémom. Keď program potrebuje požiadať o službu (na ktorú sám nemá povolenie) z jadra operačného systému, použije systémové volanie. Procesy na úrovni používateľa nemajú rovnaké povolenia ako procesy priamo interagujúce s operačným systémom. Napríklad na komunikáciu s externým I/O zariadením alebo na interakciu s akýmikoľvek inými procesmi musí program používať systémové volania.
Čo je to prerušenie?
Počas normálneho vykonávania počítačového programu môžu nastať udalosti, ktoré môžu spôsobiť dočasné zastavenie CPU. Takéto udalosti sa nazývajú prerušenia. Prerušenia môžu byť spôsobené chybami softvéru alebo hardvéru. Hardvérové prerušenia sa nazývajú (jednoducho) prerušenia, zatiaľ čo softvérové prerušenia sa nazývajú výnimky alebo pasce. Po vyvolaní prerušenia (softvéru alebo hardvéru) sa riadenie prenesie do špeciálneho podprogramu nazývaného ISR (Interrupt Service Rutine), ktorý dokáže zvládnuť podmienky vyvolané prerušením.
Ako už bolo spomenuté vyššie, výraz prerušenie je zvyčajne vyhradený pre hardvérové prerušenia. Sú to prerušenia riadenia programu spôsobené externými hardvérovými udalosťami. Externý tu znamená externý voči CPU. Hardvérové prerušenia zvyčajne pochádzajú z mnohých rôznych zdrojov, ako sú čip časovača, periférne zariadenia (klávesnice, myš atď.), I/O porty (sériové, paralelné atď.), diskové jednotky, hodiny CMOS, rozširujúce karty (zvuková karta, video). karta atď.). To znamená, že hardvérové prerušenia sa takmer nikdy nevyskytujú v dôsledku nejakej udalosti súvisiacej s vykonávaným programom. Napríklad udalosť, ako je stlačenie klávesu na klávesnici používateľom, alebo časový limit interného hardvérového časovača môže vyvolať tento druh prerušenia a môže informovať CPU, že určité zariadenie potrebuje určitú pozornosť. V takejto situácii CPU zastaví čokoľvek, čo robil (t.j. pozastaví aktuálny program), poskytne službu požadovanú zariadením a vráti sa späť k normálnemu programu.
Aký je rozdiel medzi systémovým volaním a prerušením?
Systémové volanie je volanie podprogramu zabudovaného v systéme, zatiaľ čo prerušenie je udalosť, ktorá spôsobí, že procesor dočasne pozastaví aktuálne vykonávanie. Jedným z hlavných rozdielov je však to, že systémové volania sú synchrónne, zatiaľ čo prerušenia nie sú. To znamená, že systémové volania sa vyskytujú v pevnom čase (zvyčajne určuje programátor), ale prerušenia môžu nastať kedykoľvek v dôsledku neočakávanej udalosti, ako je stlačenie klávesu na klávesnici používateľom. Preto, keď dôjde k systémovému volaniu, procesor si musí pamätať len to, kam sa má vrátiť, ale v prípade prerušenia si procesor musí zapamätať miesto, kam sa má vrátiť, ako aj stav systému. Na rozdiel od systémového volania, prerušenie zvyčajne nemá nič spoločné s aktuálnym programom.