Obs
Obs
ł
ł
uga wej
uga wej
ś
ś
cia/wyj
cia/wyj
ś
ś
cia
cia
• Cele podsystemu wejścia/wyjścia:
– udostępnienie jednakowych metod dostępu do urządzeń
– niezależność programów od urządzenia we/wy
– zwiększenie wydajności
• Podstawowe właściwości urządzeń:
– jednostki przesyłania danych (bajty, bloki)
– sposób dostępu (sekwencyjny, swobodny)
– organizacja przesyłu (synchroniczna lub asynchroniczna)
– współdzielenie (dostęp wyłączny lub wspólny)
– prędkość przesyłu danych
– operacje uprzywilejowane (odczyt, zapis, inne)
– błędy przy wykorzystaniu urządzeń
– kody znaków
Niskopoziomowa obs
Niskopoziomowa obs
ł
ł
uga urz
uga urz
ą
ą
dze
dze
ń
ń
we/wy
we/wy
• W starszych systemach przesyłanie danych związane z pracą
urządzeń zewnętrznych było sterowane przez jednostkę
centralną (polling). Uniemożliwiało to wykonywanie w tym
samym czasie obliczeń programu i operacji wejścia/wyjścia
• Typowe sposoby koordynowania pracy jednostki centralnej i
urządzeń wejścia-wyjścia:
– Przesyłanie danych sterowane przerwaniami
– Przesyłanie danych na zasadzie bezpośredniego dostępu do
pamięci (DMA)
Systemy z obs
Systemy z obs
ł
ł
ug
ug
ą
ą
przerwa
przerwa
ń
ń
• Procedura przesyłania danych
1. Procesor ustawia odpowiednie rejestry kontrolera urządzenia, po czym
wznawia normalną pracę.
2. Kontroler bada zawartość rejestrów. Jeśli, na przykład zostanie
rozpoznane polecenie czytania, to sterownik zainicjuje przesyłanie
danych z urządzenia do swojego bufora.
3. Gdy przesyłanie danych zostanie zakończone, kontroler za pomocą
przerwania informuje CPU, że zakończył operację.
4. Procesor wstrzymuje bieżącą pracę i rozpoczyna procedurę obsługi
przerwania.
5. Procedura obsługi przerwania przesyła dane z lokalnego bufora
kontrolera do pamięci głównej.
6. Następuje pobranie zapamiętanego adresu powrotnego i wznowienie
przerwanych obliczeń, tak, jakby przerwania nie było.
Systemy z obs
Systemy z obs
ł
ł
ug
ug
ą
ą
przerwa
przerwa
ń
ń
(c.d.)
(c.d.)
procesor
wykonywanie
procesu
użytkownika
obsługa
przerwań
wejścia-wyjścia
bezczynne
przesyłające
urządzenie
wejścia-
wyjścia
zamówienie
wejścia-wyjścia
przesłanie
wykonane
zamówienie
wejścia-wyjścia
przesłanie
wykonane
Bezpo
Bezpo
ś
ś
redni dost
redni dost
ę
ę
p do pami
p do pami
ę
ę
ci
ci
•
Przeznaczony dla blokowych urządzeń wejścia-wyjścia
•
DMA – Direct Memory Access
•
Kontroler urządzenia przesyła bezpośrednio cały blok danych między
własnym buforem a pamięcią – bez interwencji procesora.
• Przerwanie wypada jeden raz na cały blok danych, a nie po przesłaniu
każdego bajtu
•
Przebieg procedury przesłania danych:
1. Przy żądaniu przesłania danych ustalany jest bufor dla operacji. Może to być pusty
bufor wejściowy lub pełny bufor wyjściowy.
2. Adres bufora umieszcza się w rejestrach kontrolera DMA, po czym za
pośrednictwem rejestru kontrolnego kontroler dostaje polecenie wykonania operacji
wejścia-wyjścia.
3. Po zakończeniu kontroler wysyła przerwanie do procesora.
Struktura obs
Struktura obs
ł
ł
ugi WE/WY
ugi WE/WY
Użytkownik
Procedura obsługi urządzenia
Procedura we/wy
Programowy sterownik urządzenia
Sterownik urządzenia
Urządzenie
PROGRAMOWY
STEROWNIK URZĄDZENIA
ŻĄDANIE
WE/WY
PROCEDURA
WE/WY
PROCEDURA
OBSŁUGI
URZĄDZENIA
PROCEDURA
PRZERWANIA
PROCES
UŻYTKOWNIKA
SYSTEM
OPERACYJNY
Niezale
Niezale
ż
ż
no
no
ść
ść
obs
obs
ł
ł
ugi
ugi
•
Programy realizują dostęp nie do rzeczywistych urządzeń, lecz
tzw. strumieni (urządzeń wirtualnych), bez uwzględniania
fizycznych charakterystyk konkretnych urządzeń.
•
Korzystanie ze strumienia:
–
otwarcie strumienia (wpis w tablicy strumieni wykorzystywanych
przez proces)
–
Wykonanie operacji we/wy
–
Zamknięcie strumienia
•
Przykład:
char buf[7]=”ABCDEF”;
FILE*str = fopen(”PRN:”,”wt”); /* lub ”C:\TEST.TXT” itp. */
if(!str) {
printf("Błąd otwarcia !");
return 0;}
fwrite(buf, 6, 1, str);
fclose(str);
Procedura wej
Procedura wej
ś
ś
cia/wyj
cia/wyj
ś
ś
cia
cia
•
Parametry:
– identyfikator strumienia
– rodzaj operacji (odczyt, zapis, formatowanie)
– ilość przesyłanych danych
– adres obszaru danych
– znacznik zakończenia
•
Niektóre systemy dopuszczają dwa rodzaje obsługi we/wy:
–
z blokowaniem (proces czeka na zakończenie operacji)
–
bez blokowania (proces kontynuuje działanie, zakończenie operacji jest sygnalizowane)
•
Algorytm procedury we/wy:
procedure ProceduraWEWY(strumień, operacja, ilość_danych,
adres_danych, znacznik_zakończenia)
begin
szukaj urządzenia w tablicy strumieni procesu;
sprawdź zgodność parametrów z deskryptorem urządzenia;
if złe parametry then zakończ z błędem;
umieść parametry w bloku zamówień WE/WY;
dołącz blok zamówień do kolejki zamówień urządzenia;
end;
Procedura obs
Procedura obs
ł
ł
ugi urz
ugi urz
ą
ą
dzenia
dzenia
•
Realizacja zamówień z kolejki
•
Algorytm (
Operacja wejścia
)
forever
begin
repeat until są zamówienia;
wybierz blok z kolejki;
inicjuj operację WE na podstawie danych z bloku;
czekaj na wykonanie operacji;
sprawdź status błędu;
[konwertuj znaki]
[umieść dane pod adresem docelowym]
[ustaw znacznik zakończenia]
usuń
blok z kolejki
end;
IDENTYFIKATOR
LISTA ROZKAZÓW
STAN URZĄDZENIA
TABLICE
KONWERSJI
ZNAKÓW
KOLEJKA
ZAMÓWIEŃ
DOSTĘPU
DESKRYPTOR
URZĄDZENIA
BLOKI ZAMÓWIEŃ
WE/WY
OPERACJA
ILOŚĆ
ADRES
ID PROCESU
ZNACZNIK
ZAKOŃCZENIA
Buforowanie
Buforowanie
•
Dane wejściowe są pobierane przez system i umieszczane w buforze
wejściowym, skąd mogą być pobrane przez proces użytkownika.
Faktyczny dostęp do urządzenia jest realizowany w momencie
opróżnienia bufora.
•
Dane wyjściowe umieszczane są w buforze wyjściowym, zaś
system operacyjny wysyła je do urządzenia dopiero po zapełnieniu
bufora
.
PROCES
UŻYTKOWNIKA
DANE
WEJŚCIOWE
DANE
WYJŚCIOWE
BUFOR
WEJŚCIOWY
URZĄDZENIE
WEJŚCIA/
WYJŚCIA
BUFOR
WYJŚCIOWY
•
Podwójne buforowanie
Urz
Urz
ą
ą
dzenia podzielne i niepodzielne
dzenia podzielne i niepodzielne
•
Urządzenia podzielne to takie, do których dostęp może mieć jednocześnie
wiele procesów, zaś kolejka zamówień jest realizowana na bieżąco, zgodnie
z napływem zgłoszeń.
•
Urządzenia niepodzielne nie dopuszczają przeplatania przesyłanych
danych.
– Jeden proces ma do takiego urządzenia wyłączny dostęp od chwili otwarcia do
zamknięcia strumienia.
– Gdy urządzenie niepodzielne jest zajęte przez proces, zamówienia od innych
procesów nie są realizowane, zaś procesy te muszą oczekiwać na zwolnienie
urządzenia.
Spooling
Spooling
• Ogranicza skutki blokowania procesów korzystających z
urządzenia niepodzielnego
•
Dane nie są przesyłane wprost do urządzenia niepodzielnego, lecz do
urządzenia pośredniego.
•
Spooler obsługuje dane przechowywane na urządzeniu pośrednim i
wysyła je do urządzenia docelowego wtedy, kiedy jest ono wolne.
OperacjaWY
OperacjaWE
Dane gotowe
PROCES
PLIK
NA
DYSKU
SPOOLER
OperacjaWY