GeeksforGeeks

, Author

Przerwanie jest sygnałem emitowanym przez sprzęt lub oprogramowanie, gdy proces lub zdarzenie wymaga natychmiastowej uwagi. Ostrzega on procesor o procesie o wysokim priorytecie, wymagającym przerwania aktualnie działającego procesu. W urządzeniach I/O jedna z linii sterujących magistrali jest przeznaczona do tego celu i jest nazywana ISR (Interrupt Service Routine).

Kiedy urządzenie zgłasza przerwanie w powiedzmy procesie i, procesor najpierw kończy wykonywanie instrukcji i. Następnie ładuje licznik programu (PC) adresem pierwszej instrukcji ISR. Przed załadowaniem adresu licznika programu, adres przerwanej instrukcji jest przenoszony do tymczasowej lokalizacji. Dlatego po obsłudze przerwania procesor może kontynuować proces i+1.

Podczas obsługi przerwań procesor musi poinformować urządzenie, że jego żądanie zostało rozpoznane, tak aby przestało ono wysyłać sygnał żądania przerwania. Ponadto, zapisywanie rejestrów, aby przerwany proces mógł być przywrócony w przyszłości, zwiększa opóźnienie pomiędzy momentem odebrania przerwania a rozpoczęciem wykonywania ISR. Nazywa się to Interrupt Lattency.

Hardware Interrupts:
W przerwaniu sprzętowym wszystkie urządzenia są podłączone do Interrupt Request Line. Pojedyncza linia żądania jest używana dla wszystkich n urządzeń. Aby zażądać przerwania, urządzenie zamyka swój powiązany przełącznik. Gdy urządzenie zgłasza żądanie przerwania, wartość INTR jest logicznym OR żądań z poszczególnych urządzeń.

Sekwencja zdarzeń związanych z obsługą przerwania IRQ:

  1. Urządzenia zgłaszają IRQ.
  2. Procesor przerywa aktualnie wykonywany program.
  3. Urządzenie jest informowane, że jego żądanie zostało rozpoznane i urządzenie dezaktywuje sygnał żądania.
  4. Żądana czynność jest wykonywana.
  5. Przerwanie jest włączane i przerwany program jest wznawiany.

Obsługa wielu urządzeń:
Gdy więcej niż jedno urządzenie podnosi sygnał żądania przerwania, wtedy potrzebne są dodatkowe informacje, aby zdecydować, które urządzenie ma być brane pod uwagę jako pierwsze. Następujące metody są używane do podjęcia decyzji, które urządzenie wybrać: Polling, Vectored Interrupts oraz Interrupt Nesting. Są one wyjaśnione jak poniżej.

  1. Polling:
    W pollingu, pierwsze napotkane urządzenie z ustawionym bitem IRQ jest urządzeniem, które ma być obsłużone jako pierwsze. Odpowiedni ISR jest wywoływany, aby obsłużyć to samo. Jest to łatwe do zaimplementowania, ale marnuje się dużo czasu na odpytywanie bitu IRQ wszystkich urządzeń.
  2. Przerwania wektorowe:
    W przerwaniach wektorowych urządzenie żądające przerwania identyfikuje się bezpośrednio przez wysłanie specjalnego kodu do procesora przez magistralę. Dzięki temu procesor jest w stanie zidentyfikować urządzenie, które wygenerowało przerwanie. Kod specjalny może być adresem początkowym ISR lub miejscem, w którym ISR znajduje się w pamięci, i jest nazywany wektorem przerwania.
  3. Zagnieżdżanie przerwań:
    W tej metodzie urządzenie wejścia/wyjścia jest zorganizowane w strukturze priorytetowej. Dlatego żądanie przerwania od urządzenia o wyższym priorytecie jest rozpoznawane, a żądanie od urządzenia o niższym priorytecie nie jest rozpoznawane. Aby to zaimplementować każdy proces/urządzenie (nawet procesor). Procesor akceptuje przerwania tylko od urządzeń/procesów o priorytecie wyższym od niego.

Priorytet procesora jest zakodowany w kilku bitach PS (Process Status register). Może on być zmieniany przez instrukcje programowe, które zapisują do PS. Procesor znajduje się w trybie nadzorowanym tylko podczas wykonywania procedur OS. Przechodzi w tryb użytkownika przed wykonaniem programów aplikacyjnych.

Uwaga czytelnicy! Nie przestawaj się teraz uczyć. Zdobądź wszystkie ważne koncepcje CS Theory dla wywiadów SDE z Kursem CS Theory w przyjaznej dla studenta cenie i stań się gotowy do pracy w przemyśle.

Tagi artykułu :

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.