Przerwania w systemach mikroprocesorowych (działanie, klasyfikacja, zastosowanie)

From Obrona

Przerwanie (ang. interrupt) – sygnał powodujący zmianę przepływu sterowania, niezależnie od aktualnie wykonywanego programu. Pojawienie się przerwania powoduje wstrzymanie aktualnie wykonywanego programu i wykonanie przez procesor kodu procedury obsługi przerwania (ang. interrupt handler).

[edit] Rodzaje przerwań

Przerwania dzielą się na trzy grupy:

  1. Zewnętrzne – sygnał przerwania pochodzi z zewnętrznego układu obsługującego przerwania sprzętowe; przerwania te służą do komunikacji z urządzeniami zewnętrznymi, np. z klawiaturą, napędami dysków itp.
  2. Wewnętrzne, nazywane wyjątkami (ang. exceptions) – zgłaszane przez procesor dla sygnalizowania sytuacji wyjątkowych (np. dzielenie przez zero); dzielą się na trzy grupy:
    1. faults (niepowodzenie) – sytuacje, w których aktualnie wykonywana instrukcja powoduje błąd; gdy procesor powraca do wykonywania przerwanego kodu wykonuje następną, po tej która wywołała wyjątek, instrukcję;
    2. traps (pułapki) – sytuacja, która nie jest błędem, jej wystąpienie ma na celu wykonanie określonego kodu; wykorzystywane przede wszystkim w debugerach; gdy procesor powraca do wykonywania przerwanego kodu tę samą instrukcję która wywołała wyjątek;
    3. aborts – błędy, których nie można naprawić.
  3. Programowe – z kodu programu wywoływana jest procedura obsługi przerwania; najczęściej wykorzystywane do komunikacji z systemem operacyjnym, który w procedurze obsługi przerwania (np. w DOS 21h, 2fh, Windows 2fh, Linux x86 przerwanie 80h) umieszcza kod wywołujący odpowiednie funkcje systemowe w zależności od zawartości rejestrów ustawionych przez program wywołujący, lub oprogramowaniem wbudowanym jak procedury BIOS lub oprogramowanie wbudowane w urządzenie (firmware).

Producenci procesorów część pozycji w tablicy wektorów przerwań rezerwują dla przerwań wewnętrznych. Pozostałe numery przerwań mogą być dowolnie wykorzystane przez producentów systemów komputerowych i oprogramowania. Obsługiwanie większości przerwań (wszystkich lub wybranych numerów) można wstrzymać lub zablokować, wyjątkiem są przerwania niemaskowalne.

Przerwanie niemaskowalne (ang. NMI – Non-Maskable Interrupt) – specjalny rodzaj przerwania występujący w większości architektur procesorów. Tym, co odróżnia je od zwykłego przerwania, jest brak możliwości zignorowania (zamaskowania) go, stąd termin "niemaskowalne".

Obecnie przerwań NMI używa się głównie do debugowania kodu programów, który może wyłączać zwykłe przerwania (np. kod systemu operacyjnego).

[edit] Pochodzenie tekstu

Tekst pochodzi z polskiej Wikipedii lub opiera się na haśle z Wikipedii i udostępniony jest na licencji GFDL.

  • Co to GFDL? - artykuł na pl.wikipedia.org
  • GFDL - licencja GFDL w witrynie gnu.org
Personal tools