Přerušit

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 27. dubna 2022; ověření vyžaduje 1 úpravu .

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] .

Schůzka

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 .

Druh

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.

Maskování

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 .

Stanovení priorit

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] .

Tabulka přerušení

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.

Průhlednost

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í

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 .

Poznámky

  1. 1 2 Tanenbaum, 2018 , str. 452.
  2. Pogorely, 1989 , str. 56.
  3. Tanenbaum, 2018 , str. 454=456.
  4. Tanenbaum, 2018 , str. 453.
  5. Tanenbaum, 2018 , str. 454.

Literatura