PRZERWANIA
1. Obsługa zdarzeń poprzez przerwania
Obsługa przerwania polega na przerwaniu aktualnie wykonywanego procesu i wykonaniu procedury przypisanej danemu zdarzeniu gdy takie zdarzenie zajdzie.
Procedura nazywa się procedurą obsługi przerwania (ang. interrupt
handler). Często używany jest też skrót ISR (ang. Interrupt Service Routine).
P0
P1 - Procedura obslugi przerwania Przerwanie
P0
Powrót z procedury
obslugi przerwania
P0 - Proces glówny
P1 Zdarzenie Z1
Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1
Zachodzi potrzeba rozstrzygnięcia które zdarzenie ma obsługiwane gdy wiele z nich wystąpi naraz. Istnieją tu dwie podstawowe strategie postępowania:
1. Jednopoziomowy system przerwań.
2. Priorytetowy system przerwań.
Gdy za obsługę oczekuje więcej nie obsłużonych przerwań wybór przerwania do obsługi może być dokonany według różnych zasad.
1. Poszczególnym przerwaniom mogą być przypisane priorytety.
2. Przerwania mogą być obsługiwane według kolejności zgłoszeń.
P0
Obsluga przerwania
Z1
P0 P0 - Proces
glówny
Zdarzenie Z1 Zdarzenie Z2
Obsluga przerwania
Z2
Przyjecie obslugi przerwania
Z2
Dwa przerwania obsługiwane w systemie jednopoziomowym
P0
Obsluga przerwania
Z1
P0 Zdarzenie Z1 Zdarzenie Z2
Obsluga przerwania
Z2 Obsluga przerwania
Z1 zawieszona
Kontynuacja obslugi przerwania
Z1 Obsluga przerwania
Z1 wznowiona
Dw a przerwania obsługiwane w systemie wielopoziomowym
Obsługa przerwań w systemie komputerowym jest czasami blokowana przez system operacyjny. Maksymalny czas zablokowania przerwań Tdmax jest podstawową miarą jakości systemu czasu rzeczywistego.
Czas Tdmax powinien być jak najkrótszy.
Maksymalny czas Tmax reakcji na zdarzenie, w systemie z
przerwaniami, jest równy maksymalnemu czasowi zablokowania przerwań Tdmax czyli Tmax = Tdmax .
Obsługa zdarzeń poprzez przerwania ma dla systemu komputerowego daleko idące konsekwencje.
Istnieją dwie strategie obsługi zdarzeń poprzez przerwania:
1. Zdarzenie obsługiwane jest przez procedurę obsługi przerwania.
2. Procedura obsługi przerwania odblokowuje wątek który wykonuje obsługę zdarzenia.
wątek procedura obsługi przerwania
przerwanie
powrót z procedury obsługi przerwania ISR
Obsługa zdarzenia poprzez procedurę obsługi przerwania
wątek
procedura obsługi przerwania
przerwanie ISR
wątek obsługi przerwania
odblokowanie wątku event
Czas
Procedura obsługi przerwania wykonuje część pracy a następnie odblokowuje wątek
wątek
przerwanie wątek obsługi
przerwania
odblokowanie wątku event
Czas
Przerwanie zamieniane w zdarzenie które odblokowuje wątek.
2. Obsługa przerwań w komputerach typu PC
Procesory serii 80x86 stosowane w komputerach PC obsługują następujące rodzaje przerwań:
1. Przerwania zewnętrzne – generowane są przez urządzenia zewnętrzne i koordynowane przez kontroler przerwań.
2. Przerwania wewnętrzne - generowane są przez układy wewnętrzne procesora i zwykle związane z naruszeniem systemu ochrony.
3. Przerwania programowe – generowane przez oprogramowanie.
Procesor posiada jedną linię zgłaszania przerwania IRQ (ang. Interrupt Request). Liczba urządzeń mogących zgłosić przerwanie jest większa.
Aby rozwiązać ten problem stosuje się urządzenie nazywane kontrolerem przerwań (ang. Interrupt Controller)
Procesor
Kontroler przerwan
Kontroler urzadzenia INT
IMRCR INTA
VH1 VH7 P1
Tablica wektorów
przerwan Procedura
obslugi przerwania
RAM
Urzadzenie IRQ0IRQ1
IRQ7 IRQi NMI
INT V
Linie przerwan
VH0
Baza B kontrolera
0 255
V = B + i i - numer lini IRQ
Obsługa przerwań w komputerze PC
Linia IRQ0 posiada najwyższy priorytet, Linia IRQ7 najniższy. Kontroler posiada dwa dostępne z zewnątrz 8 bitowe rejestry:
1. Rejestr poleceń CR (ang. Control Register). Do rejestru CR system wpisuje polecenia i odczytuje zeń statusy.
2. Rejestr maski IMR (ang. Interrupt Maskl Register).
Funkcje kontrolera przerwań:
1. Arbitraż przerwań.
2. Maskowanie przerwań.
3. Tworzenie powiązania pomiędzy pobudzeniem linii przerwania IRQi a wektorem przerwań VHi.
Gdy przerwanie IRQi zostanie przyjęte, kontroler przekazuje do procesora bajt zawierający liczbę V = B + i (baza kontrolera + numer przerwania). Na tej podstawie procesor wykonuje instrukcję INT V a zatem i procedurę obsługi przerwania IRQi . Adres procedury obsługi przerwania IRQi procesor pobiera z wektora VHi = V.
IRQ Master
IRQ Slave
Wektor HEX
Urządzenie
0 8 Timer – generuje przerwania
zegarowe
1 9 Klawiatura
8 70 Zegar czasu rzeczywistego RTC 2 9 71 W kontrolerze master wejście z
kontrolera slave
W kontrolerze slave wolne
10 72 wolne
11 73 wolne
12 74 wolne
13 75 Koprocesor
14 76 Kontroler 1 dysków IDE 15 77 Kontroler 2 dysków IDE
3 B Układ transmisji szeregowej COM2 4 C Układ transmisji szeregowej COM1
5 D Port drukarki LPT1
6 E Kontroler dysków elastycznych
7 F Port drukarki LPT2
Tablica linii przerwań, wektorów przerwań i urządzeń generujących przerwania w komputerze AT