Transcript 2 1 3 2 1

Systemy operacyjne
Wykład 3
Praca systemu
komputerowego
dr inż. Wojciech Bieniecki
Instytut Nauk Ekonomicznych
i Informatyki
http://wbieniec.kis.p.lodz.pl/pwsz
1
Architektura systemu komputerowego
Procesor, pamięć i urządzenia I/O
podłączone są do wspólnej szyny
(magistrali)
W rzeczywistych systemach mamy
do czynienia z kilkoma fizycznymi
magistralami (PCI, ISA, USB, ...)
2
Praca systemu komputerowego
Procesor i urządzenia wejścia-wyjścia mogą pracować
współbieżnie
Każdy kontroler we-wy obsługuje jeden typ urządzeń
Każdy kontroler posiada lokalny bufor
Procesor przesyła dane do/z pamięci oraz do/z lokalnych buforów
Wejście/wyjście przeprowadzane jest pomiędzy lokalnym
buforem kontrolera a urządzeniem.
Kontroler informuje o zakończeniu operacji zgłaszając
przerwanie.
System operacyjny opiera swoje działanie na przerwaniach.
3
System przerwań
Projektanci systemów operacyjnych dążąc do zwiększenia
efektywności wykorzystania systemów komputerowych dążyli do
równoległego wykorzystania urządzeń we/wy i procesora.
Aby umożliwić pracę urządzeń we/wy współbieżnie z pracą procesor
należy
zapewnić mechanizmy umożliwiające poinformowanie
procesora o rozpoczęciu lub zakończeniu operacji we/wy.
Są dwie metody pozyskania takich informacji
implementacja systemu przerwań
pooling - odpytywanie
4
Pooling
Sposobem określenia stanu urządzeń jest okresowe
„odpytywanie” przez procesor urządzeń, co powoduje opóźnienia
w wykonywaniu wszystkich procesów.
Dodatkową trudnością jest określenie interwału czasowego
pomiędzy kolejnymi pytaniami (nie za długi, nie za krótki).
Metoda ta jest wykorzystywana w tych procesorach, które nie
obsługują mechanizmu przerwań
5
Zadania systemu przerwań
Do najważniejszych zadań systemu przerwań zaliczamy rozpoznawanie źródła
przerwania i zapewnienie odpowiedniej kolejności obsługi wielu urządzeń,
które mogą jednocześnie żądać obsługi.
Te dwie najważniejsze funkcje systemu przerwań można realizować
programowo lub sprzętowo.
Poinformowanie procesora o wystąpieniu przerwania odbywa się poprzez
specjalne wejście procesora - INT.
Dodatkowe zadania systemu przerwań:
możliwość blokowania systemu przerwań przez procesor,
ignorowanie niektórych urządzeń zgłaszających przerwanie,
możliwość przerywania programu obsługi dowolnego przerwania przez
6
przerwanie
o wyższym priorytecie.
Przerwania sprzętowe
Przerwanie zewnętrzne – jest informacją o wystąpieniu
asynchronicznego zdarzenia zewnętrznego w stosunku do
procesora.
Jest niezależne od aktualnie wykonywanych przez procesor
instrukcji, na przykład.
Zakończenie transmisji danych.
Nadejście pakietu z sieci.
Przerwanie zegara.
Błąd parzystości pamięci
7
Przerwania sprzętowe
Przerwanie wewnętrzne (wyjątki) – generowane wewnętrznie
przez procesor.
Jest związane z aktualnie wykonywaną instrukcją, która powoduje
wystąpienie błędu (ang. Fault, exception) w pracy procesora
– Dzielenie przez zero
– Przepełnienie stosu
– Brak strony w pamięci (w przypadku implementacji
stronicowania)
– Brak segmentu
– Naruszenie mechanizmów ochrony.
8
Przerwania programowe
Z kodu programu wywoływana jest procedura obsługi przerwania.
To przerwanie najczęściej wykorzystywane do komunikacji z
systemem operacyjnym. Przykłady:
zdanie
mov
mov
int
db "Ala ma kota $"
ah, 9
; kod funkcji wyświetlania na ekran
dx, zdanie ; przekazanie parametrów
21h
; wyświetl tekst
tekst
mov
mov
int
db 20
ah, 0ah
dx, tekst
21h
mov
mov
mov
int
9
;
;
;
;
tablica znaków
kod funkcji odczytu klawiatury
ustaw bufor
pobierz dane
al, 04h; ust. kurs. myszy
cx, 1
dx, 1
33h
mov
int
al, 03h ;odczyt my.
33h
Przykład przerwania
Obsługa przerwania
Przerwanie musi przekazywać sterowanie do procedury
obsługi przerwania.
Typowa realizacja polega na zarezerwowaniu ciągu słów
w pamięci głównej gdzie przechowuje się adresy procedur
obsługi przerwań pochodzących od różnych urządzeń.
Tablica ta nazywana wektorem przerwań jest indeksowana
jednoznacznym numerem urządzenia.
W żądaniu przerwania przekazywany jest ów unikalny
w systemie numer urządzenia dzięki czemu wykonywana jest
właściwa procedura obsługi przerwania dla danego
urządzenia.
11
Procedura obsługi przerwania
Ciąg rozkazów realizujących pożądaną reakcję na przerwanie.
otwarcie
zaworu
zrzutowego
odczyt wejść
obliczenia
wysterowanie
wyjść
Program tła
Inaczej program główny- sekwencja działań (rozkazów) mikroprocesora
realizowanych gdy nie ma przerwań
UWAGA: obsługa przerwania nie powinna zakłócać działania programu
Ź
L
E
fragment
programu
tła:
...
A:=200
B:=44
A:=A+B
M[201]:=A
...
fragment
procedury
obsługi
przerwania:
...
B:=11
A:=B*B
M[101]:=A
...
M[201]=132 M[101]=121
fragment
programu
tła:
...
A:=200
B:=44
A:=A+B
M[201]:=A
...
fragment
procedury
obsługi
przerwania:
A,Bstos
...
B:=11
A:=B*B
M[101]:=A
...
stosB,A
M[201]=244 M[101]=121
D
O
B
R
Z
E
Struktura procedury obsługi przerwania
1. Składowanie na stosie rejestrów roboczych. IE – rejestr maski blokujący
przerwania
2. Rozpoznanie (dokładne) przyczyny przerwania.
3. Skasowanie przyczyny przerwania.
4. Dodatkowa obróbka informacji.
5. Odtworzenie rejestrów roboczych ze stosu.
6. Odblokowanie przerwań.
7. Powrót do zawieszonego programu.
program tła
INT
IE
1 2 3 4 5 6 7 c.d. programu tła
Obsługa przerwania – błędy logiczne
1. odblokowanie przerwań (6) następuje przed skasowaniem
przyczyny przerwania (3).
program tła
INT
IE
1 2 61 2 6
1
2
6
1 2 61 2 6
itd.
Obsługa przerwania – błędy logiczne
2. Brak skasowania przyczyny przerwania (3):
ciągłe, cykliczne wykonywanie obsługi przerwania
program tła
1 2
4 5 67 1 2
4 5 67 1 2
4 5 67
INT
IE
albo z pojedynczym rozkazem z programu tła
program tła
INT
IE
1 2
4 5 67 1 2
4 5 67 1 2
4 5 67
Obsługa przerwania – błędy logiczne
3. Brak odblokowania systemu przerwań (6):
program tła
INT
IE
1 2 3 4 5 7 c.d. programu tła
Obsługa przerwania – błędy logiczne
4. Błędne odtworzenie rejestrów ze stosu (nie bilansujące się zapisy
i odczyty na stosie):
program tła
1 2 3 4 5 6 7 wykonanie przypadkowych kodów
INT
IE
PC
Rejestr C
Rejestr B
Rejestr A
adres powrotu
Rejestr C
Rejestr B
Rejestr A
adres powrotu
stos
:
stos
:
PC
Priorytetowość przerwań
Zróżnicowanie co do ważności (pilności) zadań realizowanych przez system
mikroprocesorowy.
Zadaniami tymi mogą być procedury obsługi przerwań – różnicując ich pilność
dokonuje się określenia priorytetów poszczególnych przerwań;
Priorytetowość przerwań może być zrealizowana sprzętowo przez odpowiednie
kontrolery.
CPU
kontroler
przerwań
I/O1
I/O2
I/On
Priorytetowość przerwań
może być zrealizowana sprzętowo przez odpowiednią strukturę połączeń
systemu przerwań (np. łańcuch urządzeń przerywających);
priorytety: 1>2>...>n
CPU
Vcc
Vcc
I/O1
I/O2
I/On
Priorytetowość przerwań
Priorytetowość przerwań może być zrealizowana programowo poprzez wspólny
początek procedur obsługi przerwań będący arbitrem systemu przerwań
(rozpoznaje źródła aktualnych przerwań i decyduje o kolejności ich obsługi)
CPU
Vcc
I/O1
I/O2
I/On
Priorytetowość przerwań
Może być zrealizowana programowo przez programowy arbiter systemu
przerwań z indywidualnym sprawdzaniem (pooling) urządzeń
przerywających
CPU
Vcc
I/O1
program tła
INTX
1 PASP
I/O2
I/On
2 3 4 5 6 7 c.d. programu tła
Priorytetowość przerwań
Może być zrealizowana programowo przez programowy arbiter
systemu przerwań z grupowym sprawdzaniem urządzeń
przerywających
CPU
Vcc
I/O1
program tła
INTX
I/O2
1
I/On
PA
2 3 4 5 6 7 c.d. programu tła
SP
System przerwań
Wielopoziomowość systemu przerwań - dopuszczenie do
zawieszenia aktualnie realizowanej procedury obsługi przerwania
w celu realizacji innej, zwykle o wyższym priorytecie,
procedury obsługi nowo zgłoszonego przerwania.
Wektorowość systemu przerwań - przypisanie każdemu źródłu
przerwania odrębnej procedury jego obsługi, uruchamianej
bezpośrednio w reakcji na zgłoszenie tego przerwania.
Wektorowość można uzyskać:
• przez specjalizowane kontrolery systemów przerwań, np. 8259A;
• w niektórych rodzinach mikroprocesorowych, np. Z80.
Brak wektorowości -> programowy arbiter systemu przerwań.
Wektorowość przerwań – typowe rozwiązanie w mikrokontrolerach.
Asynchroniczność przerwań
Przerwania jako zdarzenia z różnych źródeł pojawiają się w dowolnych
chwilach czasu, zupełnie niezależnie od siebie
CPU
Vcc
INT
I/O1
cykl rozkazowy n-1
I/O2
cykl rozkazowy n
I/O3
cykl rozkazowy n+1
INT1
INT2
INT3
INT
chwila testowania
wejścia przerwań
przez CPU
kolejność pojawienia się przerwań (z pkt.widzenia CPU): 1 i 3 (jednocześnie), 2
Systemy obsługi przerwań
Jednopoziomowy bez priorytetów
T
P2
T
P1
Dt2
P2
P3
Dt3
2
1 2 3
Cechy:
Opóźnienia (Dt2 , Dt3) w reakcji na przerwanie;
możliwość zgubienia przerwania podczas tych opóźnień;
maksymalny czas zwłoki w obsłudze danego przerwania może być równy
sumie czasów obsługi pozostałych przerwań w systemie.
System stosowany w małych systemach mikroprocesorowych przy 1..2 źródłach przerwań.
Systemy obsługi przerwań
Jednopoziomowy z priorytetami
T
P2
T
P3
P2
P1
priorytety: 3>2>1
Dt2
Dt1
2
3 1,2
pozorna jednoczesność
wystąpienia przerwań
Cechy:
można wskazać ważniejsze przerwania, których obsługa będzie miała
pierwszeństwo przed pozostałymi
opóźnienia (Dt1 , Dt2) w reakcji na przerwanie
przerwania o niższych priorytetach mogą długo czekać na obsługę
możliwość zgubienia przerwania podczas tych opóźnień
System stosowany przy niewielkiej liczbie źródeł przerwań.
Systemy obsługi przerwań
Wielopoziomowy bez priorytetów
T
P2
2
P1 T P3 P2 P1 2 P3 T
1
3
2
1
Cechy:
każde przerwanie jest natychmiast obsługiwane
proces obsługi dowolnego przerwania może zostać zawieszony na dość długo
przez procedury obsługi pozostałych przerwań
System bardzo rzadko stosowany.
Systemy obsługi przerwań
Wielopoziomowy z priorytetami
T
P2 P1 T
2 1
P1 P2 P3 2 P1 T
1
2
3
Cechy:
przerwania o niskich priorytetach dłużej czekają na obsługę
można przyśpieszyć obsługę ważniejszych przerwań
System zalecany przy większej liczbie źródeł przerwań.
priorytety: 3>2>1
Rodzaje przerwań
Przerwania zegarowe – regularne, o f > 1Hz:
• odmierzanie odcinków czasu (np. w ms);
• pomiar czasu astronomicznego;
• w małych systemach mikroprocesorowych: obsługa urządzeń zewnętrznych (klawiatur,
wyświetlaczy, itd.).
Przerwania od urządzeń zewnętrznych – nieregularne
Informują mikroprocesor o:
• gotowości urządzenia do nowej transmisji informacji;
• zakończeniu dotychczasowej transmisji.
Przerwania od układów kontroli pracy systemu – sporadyczne
Zwykle o wysokim priorytecie: sygnalizują szczególne stan pracy:
• zanik zasilania;
• błąd parzystości w bloku pamięci;
• załamanie się cyklu pracy oprogramowania;
• błąd/wyjątek procesora/koprocesora.
Przerwania od układów sprzężenia z obiektem – nieregularne
Informują mikroprocesor o różnych zdarzeniach w kontrolowanym obiekcie:
• zadziałanie krańcówek alarmowych;
• przekroczenie poziomów alarmowych, itp.
Programowalny układ przerwań 8259A (x86)
31
Programowalny układ przerwań
8259A
PIC (Programmable Interrupt Controller)
W układzie 8259A można wyróżnić trzy rejestry:
●
IMR – rejestr maski,
●
IRR – rejestr zgłoszenia przerwania,
●
ISR – rejestr obsługi przerwania.
32
Programowalny układ przerwań
Cechy
Żądania obsługi zgłaszane są na liniach IR0-IR7.
Ustawiając odpowiedni bit w rejestrze maski można wymusić
ignorowanie przerwań na wybranej linii.
Jeżeli odpowiedni bit w rejestrze maski jest wyzerowany to
informacja o wystąpieniu przerwania jest przekazywana dalej i
powoduje ustawienie odpowiedniego bitu w rejestrze IRR.
Przerwania mają ustalony priorytet, który maleje wraz ze
wzrostem numeru wejścia.
33
Programowalny układ przerwań –
zasada działania
Układ oceny priorytetu wybiera przerwanie o najwyższym
priorytecie i aktywuje sygnał INT, informujący procesor o
konieczności obsługi przerwania.
34
Programowalny układ przerwań –
zasada działania
Jeśli obsługa przerwań nie jest programowo zablokowana (bit IE w
rejestrze stanu procesora) to procesor reaguje sygnałem gotowości
przyjęcia przerwania na linii ~INTA.
Wyjście ~INTA procesora jest
połączone z wejściem ~INTA
układu 8259A.
35
Programowalny układ przerwań –
zasada działania c.d.
Następnie wybrany przez układ oceny priorytetu bit rejestru IRR
jest przekazywany do rejestru ISR (Interrupt Service Register).
Procesor wysyła drugi impuls
~INTA, na który kontroler
przerwań
odpowiada
wystawieniem na szynę danych
D0-D7 wektora przerwań.
36
Programowalny układ przerwań –
zasada działania c.d.
Bity 7-3 stanowią offset, który można ustalić na etapie
programowania kontrolera a bity 2-0 numer bitu ustawionego w
rejestrze ISR.
Procesor traktuje ten bajt jako
numer
procedury
obsługi
przerwania i przechodzi do jej
wykonywania.
37
Programowalny układ przerwań –
zasada działania c.d.
W przypadku gdy kontroler pracuje w trybie AEOI (Automatic
End Of Interrupt) to w momencie przejścia do wykonywania
procedury obsługi przerwania zerowany jest odpowiedni bit
rejestru ISR.
Wyzerowanie bitu w rejestrze
ISR
oznacza
gotowość
kontrolera
do
przyjęcia
następnego przerwania.
38
Kaskadowe łączenie układów
do wejść przerywających jednego sterownika 8259 master przyłączane są wyjścia
INTA z innych sterowników. Każdy przyłączony sterownik zwiększa liczbę wejść
przerywających o 8, a więc umożliwia nam to osiągnięcie 64 poziomów przerwań
39
na jedną kaskadę.
Programowalny układ przerwań
8259A dziś
Układ 8259A został wchłonięty przez jeden z
bloków chipset’u South Bridge i emuluje się tylko
jego funkcje przy zachowaniu zgodności na
poziomie rejestrów.
40