Przerwania są ważnym elementem funkcjonowania systemu komputerowego. Nazwa odnosi się do tego, że przerwania mają w zwyczaju przerywać normalną pracę programów. Zapytacie: po co? Cierpliwości, już niedługo wszystko się wyjaśni.

A oto jak w ogólnym zarysie działają przerwania: wyobraźmy sobie, że pewne urządzenie zewnętrzne jest gotowe do obsługi (czyli np. przyjmowania danych od procesora). Wtedy moduł I/O (dołączony do tego urządzenia) wysyła sygnał żądania przerwania do procesora. W odpowiedzi procesor zawiesza działanie bieżącego programu (rysunek 1.7.) i wykonuje skok do programu obsługującego to urządzenie, czyli programu obsługi przerwania (ang. interrupt handler). Po obsłużeniu urządzenia następuje powrót do programu, który został przerwany [1]. Pamiętajmy jeszcze, że zawieszenie programu użytkownika, a następnie powrót do miejsca, gdzie nastąpiło przerwanie jego działania, realizuje procesor i system operacyjny.

[Obsługa przerwania]

Rysunek 1.7. Przekazywanie sterowania przez przerwania

Ponieważ przerwania powinny być obsługiwane szybko, system posługuje się tablicą wskaźników do procedur obsługujących przerwania. Owa tablica nazywana jest wektorem przerwań (ang. interrupt vector) i jest indeksowana jednoznacznym numerem urządzenia.

Występowanie przerwań modyfikuje nieco schemat cyklu rozkazowego (patrz rysunek 1.8.). Do cyklu rozkazu dodawany jest cykl przerwania. W trakcie cyklu przerwania procesor sprawdza, czy nie pojawiły się jakieś przerwania. Jeśli przerwania nie są wykonywane, procesor pobiera następny rozkaz danego programu. Jeśli natomiast wystąpi zgłoszenie przerwania procesor [1]:

  1. Zawiesza wykonywanie bieżącego programu i zachowuje jego kontekst. Adres następnego rozkazu (zawartość licznika), a także dane zawarte w rejestrach zrzucane są na stos systemowy.
  2. Ustawia licznik na początkowy adres programu obsługi przerwań

Następnie procesor pobiera pierwszy rozkaz z programu obsługi przerwań, który podejmuje niezbędne do obsłużenia przerwania działania.

[Cykl rozkazu z przerwaniami]

Rysunek 1.8. Cykl rozkazu z przerwaniami

Warto wspomnieć, że zaawansowane architektury przerwań pozwalają na obsługę nowego przerwania przed zakończeniem poprzedniego. System operacyjny korzysta ze specjalnego schematu priorytetów, który określa jak ważna jest obsługa danego urządzenia. Przerwanie o wyższym priorytecie będzie obsługiwane również wtedy, gdy jest w trakcie wykonywane przerwanie o priorytecie niższym, zaś przerwania o tym samym lub niższym priorytecie będą maskowane (ang. masked interrupt).

NASTĘPNA