Systémové volání vs přerušení
Typický procesor provádí pokyny jeden po druhém. Mohou se však vyskytnout případy, kdy procesor musí dočasně zastavit a držet aktuální instrukci a provést nějaký jiný program nebo kódový segment (pobývající na jiném místě). Poté se procesor vrátí k normálnímu provádění a pokračuje od místa, kde byl ukončen. Takové příležitosti jsou systémové volání a přerušení. Systémové volání je volání do podprogramu zabudovaného do systému. Přerušení je přerušení řízení programu způsobené událostmi externího hardwaru.
Co je systémové volání?
Systémová volání poskytují programy spuštěné v počítači rozhraní pro komunikaci s operačním systémem. Když program potřebuje požádat o službu (pro kterou nemá oprávnění sama) z jádra operačního systému, použije systémové volání. Procesy na úrovni uživatele nemají stejná oprávnění jako procesy přímo interagující s operačním systémem. Například pro komunikaci a externí I / O zařízení 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 spuště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í mohou být způsobeny poruchami 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 Trapy. Jakmile je přerušení (software nebo hardware) vyvoláno, je ovládací prvek přenesen do speciálního podprogramu nazvaného ISR (Interrupt Service Routine), který dokáže zpracovat podmínky, které jsou přerušení vyvolány..
Jak je uvedeno výše, termín Přerušení je obvykle vyhrazen pro přerušení hardwaru. Jedná se o přerušení řízení programu způsobené událostmi externího hardwaru. Zde externí znamená externí pro CPU. Hardwarová přerušení obvykle pocházejí z mnoha různých zdrojů, jako je čip s časovačem, 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 nedojde kvůli nějaké události související s prováděcím programem. Například událost, jako je stisknutí klávesy uživatelem na klávesnici nebo interní hardwarové vypršení časového limitu, může zvýšit 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í vše, co dělá (tj. Pozastaví aktuální program), poskytne službu vyžadovanou zařízením a vrátí se zpět k normálnímu programu.
Jaký je rozdíl mezi System Call a Interrupt?
Systémové volání je volání do podprogramu zabudovaného do systému, zatímco přerušení je událost, která způsobí, že procesor dočasně drží aktuální provedení. Jedním z hlavních rozdílů je však to, že systémová volání jsou synchronní, zatímco přerušení nejsou. To znamená, že systémová volání probíhají v pevnou dobu (obvykle určeno programátorem), ale k přerušení může dojít kdykoli kvůli neočekávané události, jako je stisknutí klávesy uživatelem na klávesnici uživatelem. Proto kdykoli dojde k systémovému volání, procesor si musí pamatovat, kam se má vrátit, ale v případě přerušení si musí procesor pamatovat jak místo, kam se má vrátit, tak stav systému. Na rozdíl od systémového volání přerušení obvykle nemá nic společného s aktuálním programem.