background image

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)

background image

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

background image

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 

background image

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;

background image

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

background image

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