Systémové volání vs přerušení
Typický procesor provádí instrukce jednu po druhé. Mohou však nastat situace, kdy se procesor musí dočasně zastavit a podržet aktuální instrukci a spustit nějaký jiný program nebo segment kódu (ubytovaný na nějakém jiném místě). Poté se procesor vrátí k normálnímu provádění a pokračuje tam, kde skončil. Takovými příležitostmi jsou systémové volání a přerušení. Systémové volání je volání podprogramu zabudovaného do systému. Přerušení je přerušení řízení programu způsobené externími hardwarovými událostmi.
Co je systémové volání?
Systémová volání poskytují programům běžícím na počítači rozhraní pro komunikaci s operačním systémem. Když program potřebuje požádat o službu (pro kterou sám nemá oprávnění) z jádra operačního systému, použije systémové volání. Procesy na uživatelské úrovni nemají stejná oprávnění jako procesy přímo interagující s operačním systémem. Například pro komunikaci s externím I/O zařízením nebo pro interakci s jinými procesy musí program používat systémová volání.
Co je přerušení?
Během normálního provádění počítačového programu mohou nastat události, které mohou způsobit dočasné zastavení CPU. Události, jako je tato, se nazývají přerušení. Přerušení může být způsobeno chybami softwaru nebo hardwaru. Hardwarová přerušení se nazývají (jednoduše) přerušení, zatímco softwarová přerušení se nazývají výjimky nebo pasti. Jakmile je přerušení (softwarové nebo hardwarové) aktivováno, je řízení přeneseno do speciálního podprogramu zvaného ISR (Interrupt Service Rutine), který dokáže zpracovat podmínky vyvolané přerušením.
Jak bylo uvedeno výše, termín přerušení je obvykle vyhrazen pro hardwarová přerušení. Jsou to přerušení řízení programu způsobené externími hardwarovými událostmi. Externí zde znamená externí vůči CPU. Hardwarová přerušení obvykle pocházejí z mnoha různých zdrojů, jako je čip časovače, periferní zařízení (klávesnice, myš atd.), I/O porty (sériové, paralelní atd.), diskové jednotky, hodiny CMOS, rozšiřující karty (zvuková karta, video). karta atd.). To znamená, že k hardwarovým přerušením téměř nikdy nedochází kvůli nějaké události související se spouštěným programem. Například událost, jako je stisknutí klávesy na klávesnici uživatelem, nebo vypršení časového limitu interního hardwarového časovače, může způsobit tento druh přerušení a může informovat CPU, že určité zařízení vyžaduje určitou pozornost. V takové situaci CPU zastaví cokoli, co dělal (tj. pozastaví aktuální program), poskytne službu požadovanou zařízením a vrátí se zpět k normálnímu programu.
Jaký je rozdíl mezi systémovým voláním a přerušením?
Systémové volání je volání podprogramu zabudovaného v systému, zatímco přerušení je událost, která způsobí, že procesor dočasně pozastaví aktuální provádění. Jedním z hlavních rozdílů je však to, že systémová volání jsou synchronní, zatímco přerušení nikoli. To znamená, že systémová volání probíhají v pevně stanovený čas (obvykle určený programátorem), ale k přerušení může dojít kdykoli kvůli neočekávané události, jako je stisknutí klávesy na klávesnici uživatelem. Proto, kdykoli dojde k systémovému volání, procesor si musí pamatovat pouze to, kam se má vrátit, ale v případě přerušení si procesor musí pamatovat jak místo, kam se má vrátit, tak stav systému. Na rozdíl od systémového volání nemá přerušení obvykle nic společného s aktuálním programem.