Obsługa wejścia/wyjścia
Obsługa wejścia/wyjś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ługa urządzeń we/wy
Niskopoziomowa obsługa urządzeń 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ługą przerwań
Systemy z obsługą 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ługą przerwań (c.d.)
Systemy z obsługą przerwań (c.d.)
wykonywanie
procesu
użytkownika
procesor
obsługa
przerwań
wejścia-wyjścia
bezczynne
urządzenie
wejścia-
wyjścia
przesyłające
przesłanie przesłanie
zamówienie zamówienie
wykonane wykonane
wejścia-wyjścia wejścia-wyjścia
Bezpośredni dostęp do pamięci
Bezpośredni dostęp do pamię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ługi WE/WY
Struktura obsługi WE/WY
Użytkownik
Procedura we/wy
Procedura obsługi urządzenia
Programowy sterownik urządzenia
Sterownik urządzenia
Urządzenie
PROGRAMOWY
STEROWNIK URZDZENIA
PROCEDURA PROCEDURA
ŻDANIE PROCEDURA
WE/WY OBSAUGI
WE/WY PRZERWANIA
URZDZENIA
PROCES SYSTEM
UŻYTKOWNIKA OPERACYJNY
Niezależność obsługi
Niezależność obsł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ścia/wyjścia
Procedura wejścia/wyjś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;
sprawdz 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ługi urządzenia
Procedura obsługi urządzenia
IDENTYFIKATOR
BLOKI ZAMÓWIEC
LISTA ROZKAZÓW
WE/WY
STAN URZDZENIA
TABLICE
" Realizacja zamówień z kolejki
KONWERSJI
ZNAKÓW
" Algorytm (Operacja wejścia)
KOLEJKA
OPERACJA
ZAMÓWIEC
forever ILOŚĆ
DOSTPU
ADRES
begin
ID PROCESU
DESKRYPTOR
ZNACZNIK
repeat until są zamówienia;
URZDZENIA ZAKOCCZENIA
wybierz blok z kolejki;
inicjuj operację WE na podstawie danych z bloku;
czekaj na wykonanie operacji;
sprawdz status błędu;
[konwertuj znaki]
[umieść dane pod adresem docelowym]
[ustaw znacznik zakończenia]
usuń blok z kolejki
end;
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
BUFOR
DANE
WEJŚCIOWY
WEJŚCIOWE
URZDZENIE
WEJŚCIA/
WYJŚCIA
BUFOR
DANE
WYJŚCIOWY
WYJŚCIOWE
" Podwójne buforowanie
Urządzenia podzielne i niepodzielne
Urzą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.
PROCES PLIK
OperacjaWY
NA
DYSKU
OperacjaWE
Dane gotowe
SPOOLER
OperacjaWY
Wyszukiwarka
Podobne podstrony:
wejscie wyjsciePorty wejścia wyjściaoperacje wejscia wyjscia 13operacje wejscia wyjscia 7JAVA 06 wejście i wyjścieUklady wejscia wyjscia (TAK13)Wejście, wyjście V rok 2016operacje wejscia wyjscia 8Podstawy wejścia i wyjścia w CProgramowanie wspolbiezne KIA PRz07 Strumienie, operacje wejścia wyjściaAsynchroniczne wejście wyjście w systemie LinuxSystem plikow KIA PRz04 operacje wejscia wyjsciaoperacje wejscia wyjscia 10Szeregowanie implementacja KIA PRzwięcej podobnych podstron