Přerušení je jedním ze základních pojmů výpočetní techniky , který spočívá v tom, že když dojde k nějaké události, řízení se přenese na speciální proceduru zvanou obsluha přerušení (ISR, angl. Interrupt Service Routine ) [1] . Na rozdíl od podmíněných a nepodmíněných skoků lze přerušení volat kdekoli v programu, včetně pozastavení provádění programu, a je obvykle způsobeno událostmi mimo program. Po provedení nezbytných akcí obsluha přerušení zpravidla vrátí řízení přerušenému programu [2] .
Pro práci s periferními zařízeními se zpravidla používají přerušení. Například musíte odeslat požadavek na načtení dat z disku do paměti a během načítání provést některé další operace nebo zastavit provádění, dokud není přijato přerušení, a po dokončení stahování přejít na obsluhu přerušení který zahájí zpracování příchozích dat [1] . Pomocí přerušení lze také implementovat multitasking , ladění programů , emulaci určitých zařízení atd .
V závislosti na zdroji signálu přerušení se dělí na:
Termín "past" ( anglicky trap ) se někdy používá jako synonymum pro výraz "interruption" nebo "interruption". Použití je zpravidla stanoveno v dokumentaci výrobce konkrétní procesorové architektury.
Vnější přerušení, v závislosti na možnosti zákazu, se dělí na:
Obsluhy přerušení jsou obvykle napsány tak, aby doba jejich zpracování byla co nejkratší, protože jiná přerušení nelze během jejich provozu zpracovat a pokud je jich mnoho (zejména z jednoho zdroje), mohou se ztratit. Systém Windows k tomu používá mechanismus volání zpožděné procedury .
Až do konce zpracování přerušení je většinou nastaven zákaz zpracování tohoto typu přerušení, aby procesor nevstoupil do cyklu zpracování jednoho přerušení. Prioritizace znamená, že všechny zdroje přerušení jsou rozděleny do tříd a každé třídě je přiřazena vlastní úroveň priority požadavku na přerušení [3] .
Vektor přerušení je číslo přiřazené zařízení, které identifikuje odpovídající obsluhu přerušení. Vektory přerušení jsou sloučeny do tabulky vektorů přerušení obsahující adresy obsluhy přerušení [4] . Umístění tabulky závisí na typu a provozním režimu procesoru.
Předpokládá se, že přerušení by mělo poskytovat transparentnost – tedy s výjimkou údajů, které je nutné na základě účelu přerušení změnit, po ukončení zpracování přerušení musí být zpracovatel vrácen do stejného stavu, ve kterém byl v době jeho výzvy [5] . V nejjednodušším případě stačí do zásobníku uložit stav všech registrů procesoru.
Softwarové přerušení je synchronní přerušení, které může být implementováno programem pomocí speciální instrukce.
V procesorech x86, pro explicitní volání synchronního přerušení, existuje instrukceInt , jejímž argumentem je číslo přerušení (od 0 do 255). Na počítačích kompatibilních s IBM PC jsou některá přerušení zpracována rutinami BIOS uloženými v paměti ROM a přerušení slouží jako rozhraní pro přístup ke službě poskytované systémem BIOS. Přerušení lze také obsluhovat BIOSem rozšiřujících karet (například síťových nebo grafických karet ), operačním systémem a dokonce i běžnými (aplikačními) programy, které jsou neustále v paměti, zatímco jiné programy běží (takzvané rezidentní programy ). Na rozdíl od reálného režimu v chráněném režimu procesorů x86 běžné programy nemohou obsluhovat přerušení, tato funkce je dostupná pouze pro systémový kód (operační systém).
MS-DOS používá k interakci se svými moduly a aplikačními programy přerušení číslovaná 20h až 3Fh (čísla jsou uvedena v šestnáctkové soustavě , jak je obvyklé při programování v jazyce symbolických instrukcí x86 ). Například přístup k hlavní sadě funkcí MS-DOS se provádí provedením instrukce Int 21h(v tomto případě se číslo funkce a její argumenty přenášejí v registrech ). Toto přidělování čísel přerušení není pevně zapojené a jiné programy mohou nainstalovat své vlastní obslužné rutiny přerušení namísto nebo nad stávající obslužné rutiny nainstalované MS-DOSem nebo jinými programy, což se obvykle používá ke změně funkčnosti nebo rozšíření seznamu funkcí systému. Této příležitosti využívají i viry .
operačních systémů | Aspekty|||||
---|---|---|---|---|---|
| |||||
Typy |
| ||||
Jádro |
| ||||
Řízení procesů |
| ||||
Správa a adresování paměti |
| ||||
Nástroje pro načítání a inicializaci | |||||
Shell | |||||
jiný | |||||
Kategorie Wikimedia Commons Wikibooks Wikibooks |
procesorů | Technologie digitálních|||||||||
---|---|---|---|---|---|---|---|---|---|
Architektura | |||||||||
Architektura instrukční sady | |||||||||
strojové slovo | |||||||||
Rovnoběžnost |
| ||||||||
Implementace | |||||||||
Komponenty | |||||||||
Řízení spotřeby |