Nástroje |
PřerušeníPřerušení (anglicky interrupt) je v informatice nástroj pro asynchronní obsluhu událostí, kdy procesor přeruší vykonávání instrukcí a vykoná obsluhu přerušení. Původně přerušení sloužilo k obsluze hardwarových zařízení, později se přidala synchronní softwarová přerušení a vnitřní přerušení pro oznamování chyb procesorem vzniklých při provádění strojových instrukcí.
[editovat] Hardwarové (vnější) přerušeníPůvodně se tak označovalo IRQ, tedy hardwarové přerušení, které nastává jako reakce na signál od zařízení, které jím upozorňuje procesor (obvykle operační systém, přesněji svůj ovladač v tomto systému), že potřebuje obsloužit. Procesor při příchodu přerušení přestane provádět současný výpočet, uloží část svého stavu a začne vykonávat obsluhu přerušení. Takovýto typ přerušení (vyvolaný HW) je tzv. asynchronní, tedy může přijít v libovolném bodu výpočtu (nikoliv ovšem doslova libovolném: například nemůže přijít uprostřed instrukce, a to ani u moderních superskalárních procesorů, ve kterých se instrukce rozkládá na více interních instrukcí). Přerušení přichází bez ohledu na to, kolik je momentálně vykonávaných programů. Přerušení lze také v některých případech zakázat maskováním – k obsluze přerušení dojde až po opětovném povolení přerušení. [editovat] Softwarové přerušeníObecnějším termínem se to stalo při zavedení softwarových přerušení, tedy přerušení vyvolávaných přímo uvnitř procesoru a využívající stejnou nebo podobnou metodu předání řízení z probíhajícího výpočtu do obsluhy přerušení. Softwarové přerušení může být vyvoláno buď speciální instrukcí (přerušení se používá jako způsob volání operačního systému z aplikace), nebo výjimečným stavem výpočtu, neboli výjimkou (dělení nulou, přístup k neexistující adrese). Softwarová přerušení jsou vždy tzv. synchronní. Pokud příjde více přerušení, musí systém vyhodnotit, v jakém pořadí se budou provádět. [editovat] Obsluha přerušení[editovat] ISR – Interrupt Service RoutineISR je obslužný podprogram pro vykonání obsluhy daného přerušení a je obvykle součástí ovladače zařízení, které přerušení vyvolalo. ISR musí nejprve uložit stavové informace CPU na zásobník (FR a PC). Poté provede obsluhu přerušení a nakonec obnoví ze zásobníku stav CPU a přerušená činnost pokračuje v místě kde byla při příchodu přerušení vykonávaná instrukce pozastavena. Přerušený program v podstatě nic nepozná – až na malé zpoždění. [editovat] Průběh hardwarového přerušení
[editovat] Průběh softwarového přerušení
[editovat] Softwarové přerušení v architektuře x86Architektura x86 má dvě instrukce pro softwarové přerušení: Má šest výjimek:
U procesoru i386 přibylo 9 dalších:
[editovat] Standardní využití linek u PC AT
|