Systémové volání vs přerušení
Typický procesor provádí pokyny jeden po druhém. Mohou ale nastat situace, kdy se procesor musí dočasně zastavit a podržet aktuální instrukci a provést nějaký jiný program nebo segment kódu (umístěný na jiném místě). Poté se procesor vrátí k normálnímu provedení a pokračuje tam, kde přestal. Systémové volání a přerušení jsou takové příležitosti. Systémové volání je volání podprogramu zabudovaného do systému. Přerušení je přerušení řízení programu způsobené událostmi externího hardwaru.
Co je to systémové volání?
Systémová volání poskytují programům spuštěným v počítači rozhraní pro komunikaci s operačním systémem. Když program potřebuje požádat o službu (ke které sám nemá oprávnění) 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 komunikují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 to 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 tento, se nazývají přerušení. Přerušení může být způsobeno chybou 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 se přeruší přerušení (software nebo hardware), ovládací prvek se přenese do speciálního podprogramu zvaného ISR (Interrupt Service Routine), který zvládne podmínky vyvolané přerušení.
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á událostmi externího hardwaru. Zde externí znamená mimo CPU. Hardwarová přerušení obvykle pocházejí z mnoha různých zdrojů, jako je časovač, 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ějícím programem. Například událost jako stisknutí klávesy na klávesnici uživatelem nebo vypršení časového limitu interního hardwarového časovače 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 se CPU zastaví, co dělá (tj. Pozastaví aktuální program),poskytuje službu požadovanou zařízením a vrátí se k normálnímu programu.
Jaký je rozdíl mezi System Call a Interrupt?
Systémové volání je volání podprogramu zabudovaného do systému, zatímco Interrupt je událost, která způsobí, že procesor dočasně pozastaví aktuální spuštění. Jedním z hlavních rozdílů však je, že systémová volání jsou synchronní, zatímco přerušení nejsou. To znamená, že systémová volání probíhají v pevně stanovenou dobu (obvykle určenou programátorem), ale k přerušení může dojít kdykoli v důsledku 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 musí procesor pamatovat jak místo, kam se má vrátit, tak i 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.