09 wewy (2)


Systemy operacyjne
Systemy operacyjne
Maciej J. Bargielski
Maciej J. Bargielski
System wejścia-wyjścia
System wejścia-wyjścia
System wejścia-wyjścia
Wprowadzenie.
Sprzęt wejścia-wyjścia.
Użytkowy interfejs WE/WY.
Podsystem WE/WY w jÄ…drze.
Przekształcenia zamówień WE/WY na operacje
sprzętowe.
Strumienie (streams)
Wydajność.
2
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Wprowadzenie
Wprowadzenie
Komputer wykonuje dwa główne zadania: przetwarza informacje i
obsługuje działania na wejściu i wyjściu.
Duża różnorodność urządzeń WE/WY pod względem szybkości i
funkcji (np. myszka, dysk twardy,  grająca szafa z płytami CD)
sprawia, że do sterowania nimi potrzeba różnorodnych metod.
Metody te tworzą w jądrze podsystem wejścia-wyjścia (I/O
subsystem) oddzielający resztę jądra od złożoności zarządzania
WE/WY.
Podstawowe elementy sprzętowe WE/WY występujące w wielu
urządzeniach zewnętrznych to: porty, szyny i sterowniki urządzeń
(device controllers).
Aby ogarnąć szczegóły i osobliwości tych urządzeń, w jądrze systemu
operacyjnego umieszcza się moduły sterujące (device drivers).
Moduły sterujące tworzą jednolity interfejs dostępu do podsystemu
WE/WY (podobnie jak odwołania do systemu tworzą interfejs między
programem użytkowym a systemem operacyjnym).
3
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Sprzęt we-wy
Sprzęt we-wy
Typowe urządzenia, z których korzystają komputery:
Urządzenia pamięci: dyski, taśmy;
Urządzenia przesyłania danych: karty sieciowe, modemy;
Urządzenia interfejsu z człowiekiem: ekrany monitorów, klawiatury, myszki.
Typowe elementy sprzętowe WE/WY:
Port (port)  punkt, przez który urządzenie kontaktuje się z maszyną;
Szyna (magistrala) (bus)  wspólna wiązka przewodów, z której korzysta
jedno lub więcej urządzeń; posiadająca ściśle zdefiniowany protokół,
precyzujący zbiór komunikatów, który można tymi przewodami przesyłać.
Np. szyna PCI, szyna rozszerzajÄ…ca, szyna SCSI w komputerach PC.
Sterownik (controller)  zespół układów elektronicznych służących do
kierowania pracą portu, szyny lub urządzenia. Niektóre urządzenia mają
własne, wbudowane sterowniki, np. napęd dysku posiada sterownik dysku.
Komunikacja między procesorem a sterownikiem:
Sterownik ma rejestry do pamiętania danych i sygnałów sterujących.
Proces czyta i zapisuje układów bitów w tych rejestrach.
Do realizacji komunikacji służą specjalne rozkazy WE/WY określające
przesłanie bajta lub słowa na adres portu WE/WY.
Do szybkiego przesyłania dużych ilości danych stosuje się metodę DMA.
4
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Struktura szyn typowego PC
Struktura szyn typowego PC
Dysk
Szyna
Monitor
pamięci
Procesor
procesora
Dysk
Pamięć
podręczna
DMA,
Sterownik Pamięć Sterownik
sterownik przerwań,
graficzny operacyjna SCSI
sterownik pamięci
Szyna PCI
Sterownik Interface szyny
Klawiatura
dysku IDE rozszerzajÄ…cej
Szyna rozszerzajÄ…ca
Dysk Dysk
Port Port
równoległy szeregowy
Dysk Dysk
5
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Port we-wy
Port we-wy
Port wejścia wyjścia składa się zwykle z czterech rejestrów:
Rejestr stanu (status)  zawiera bity wskazujÄ…ce stany urzÄ…dzenia:
zakończenie bieżącego polecenia, dostępność bajta do czytania w
rejestrze danych WE i wykrycie błędu w urządzeniu; bity te mogą być
czytane przez procesor główny.
Rejestr sterowania (control)  może być zapisywany przez procesor
główny w celu rozpoczęcia polecenia lub zmiany trybu pracy.
Rejestr danych wejściowych (data-in)  jest czytany przez procesor
główny w celu pobrania informacji z urządzenia.
Rejestr danych wyjściowych (data-out)  jest zapisywany przez
procesor główny przy wysyłaniu danych.
Rejestry danych mają na ogół od 1 do 4 bajtów, niektóre mają
układy FIFO do przechowywania kilku bajtów (pomagają
rozładowywać chwilowe spiętrzenia).
6
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Odpytywanie (polling)
Odpytywanie (polling)
Prostym protokołem konwersacji między procesorem głównym a sterownikiem
urzÄ…dzenia jest tzw. uzgadnianie (handshaking).
Przykład: Komunikacja typu producent-konsument  potrzebne 2 bity:
1. Sterownik zaznacza swój stan za pomocą bitu zajętości (busy) w rejestrze stanu
(ustawia, gdy jest zajęty pracą, czyści, tzn. zeruje, gdy jest gotów).
2. Procesor sygnalizuje swoje życzenia za pomocą bitu gotowości polecenia
(command-ready) w rejestrze poleceń (command register).
3. Procesor powtarza czytanie bitu zajętości dopóki nie przyjmie on wartości 0, tzn.
wykonuje aktywne czekanie lub inaczej odpytywanie.
4. Procesor ustawia bit pisania (write bit) w rejestrze poleceń i wpisuje bajt do rejestru
danych wyjściowych.
5. Procesor ustawia bit gotowości polecenia.
6. Gdy sterownik stwierdzi, że powyższy bit jest ustawiony, to ustawia bit zajętości.
7. Sterownik czyta rejestr poleceń i rozpoznaje polecenie pisania, następnie czyta bajt
w rejestru danych wejściowych i wykonuje na urządzeniu operację WE/WY.
8. Sterownik czyści bit gotowości polecenia oraz bit błędu (error bit) w rejestrze stanu
(operacja się powiodła), a następnie czyści bit zajętości, sygnalizując, że operacja
się powiodła.
Schemat odpytywania można stosować gdy sterownik i urządzenie są
szybkie, natomiast dla wolnych urządzeń odpytywanie marnuje dużo czasu
procesora.
7
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Przerwania (interrupts)
Przerwania (interrupts)
Osprzęt procesora ma ścieżkę zwaną linią zgłaszania przerwań.
Do obsługi przerwania służy specjalna procedura obsługi
przerwania (interrupt handler).
Schemat podstawowego mechanizmu przerwania:
Sterownik urządzenia zgłasza przerwanie za pomocą sygnału podawanego
w linii zgłaszania przerwania.
Procesor przechwytuje przerwanie i ekspediuje je do procedury obsługi
przerwania.
Procedura obsługi czyści przerwane, obsługując urządzenie.
Podstawowy mechanizm przerwania umożliwia procesorowi
reagowanie na zdarzenia asynchroniczne, np. gotowość sterownika.
W większości procesorów są dwie linie zgłaszania przerwań:
Przerwania niemaskowalne, np. nieusuwalne błędy pamięci;
Przerwania maskowalne  można je wyłączyć przed wykonaniem
krytycznych instrukcji; używane do zgłaszania żądań obsługi przez
sterowniki.
Najczęściej adresy procedur obsługi przerwania znajdują się w tablicy
zwanej wektorem przerwań (interrupt vector); mechanizm przerwania
generuje indeks tej tablicy wskazując procedurę obsługi.
8
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Cykl we-wy sterowany przerwaniem
Cykl we-wy sterowany przerwaniem
Procesor
1
Sterownik we-wy
Moduł sterujący urządzenia
rozpoczyna operacjÄ™ we-wy
2
Rozpoczęcie operacji we-wy
Między rozkazami procesor sprawdza
występowanie przerwań
3
Gotowość wejścia, wyjście
4
zakończone lub błąd
Procesor przyjmuje przerwanie i
wytworzenie sygnału przerwania
przekazuje sterowanie procedurze
obsługi przerwania
5
Procedura obsługi przerwania
przetwarza dane i wykonuje
powrót po przerwaniu
6
Procesor podejmuje
wykonywanie przerwanego
działania
9
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Tablica wektora zdarzeń procesora Pentium
Tablica wektora zdarzeń procesora Pentium
10
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Mechanizm przerwań
Mechanizm przerwań
Mechanizm przerwań zawiera też system poziomów priorytetów przerwań
(interrupt priority levels), który pozwala przerwaniom wysokopriorytetowym
wywłaszczać obsługę przerwań niskopriorytetowych (opóznianie obsługi bez
maskowania).
Różne zastosowanie mechanizm przerwań:
Do obsługi wyjątków (exceptions), jak dzielenie przez zero, zaadresowanie
chronionego lub nieistniejącego obszaru pamięci itd.
Przy stronicowaniu pamięci wirtualnej (brak strony przerwanie).
W realizacji wywołań systemowych (system calls), tzn. funkcji wywoływanych
przez programy użytkowe w celu przywołania usługi jądra; używane są specjalne
rozkazy zwane przerwaniami programowymi (software interrupt) lub pułapkami
(traps), które powodują przełączenie procesora do trybu nadzorcy i przejście do
wykonania odpowiedniej procedury jÄ…dra (majÄ… stosunkowo niskie priorytety).
Do zarzÄ…dzania przebiegiem sterowania w jÄ…drze, np. operacje WE/WY na dysku z
użyciem bufora jądra.
Architektura z wątkami jądra umożliwia przydzielanie procedur obsługi
przerwań wątkom; przypisanie wątkom priorytetów ułatwia stosowanie
schematu priorytetów przerwań (np. system Solaris).
Przerwania są stosowane we wszystkich współczesnych systemach
operacyjnych do obsługi zdarzeń asynchronicznych oraz do przechodzenia do
procedur jÄ…dra wykonywanych w trybie nadzorcy.
11
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Bezpośredni dostęp do pamięci
Bezpośredni dostęp do pamięci
Programowane wejście-wyjście (programmed I/O  PIO)  procesor
sprawdza bity stanu i przekazuje dane sterownikowi po jednym bajcie.
Zastosowanie PIO do urządzenia transmitującego wielkie ilości informacji jest
bardzo nieefektywne (zabiera sporo czasu procesora głównego).
Sterownik bezpośredniego dostępu do pamięci (direct memory access 
DMA)  wyspecjalizowany procesor do przesyłania danych w trybie DMA:
Aby przesyłanie rozpocząć procesor główny zapisuje w pamięci blok sterujący DMA,
zawierający wskaznik do zródła przesyłania, wskaznik do miejsca docelowego
przesyłania oraz liczbę bajtów do przesłania.
Procesor zapisuje adres bloku sterujÄ…cego w sterowniku DMA i przechodzi do
kontynuacji innych prac.
Sterownik DMA przejmuje bezpośredni nadzór nad szyną pamięci.
Uzgadnianie przesyłania między sterownikiem DMA a sterownikiem urządzenia
odbywa się za pomocą pary przewodów zwanych zamówieniem DMA (DMA
request) i potwierdzeniem DMA (DMA acknowledge).
Choć sterownik DMA kradnie cykle pamięci procesorowi głównemu, to jednak
stosowanie przesyłania DMA zwykle poprawia ogólną wydajność systemu.
W niektórych architekturach stosuje się bezpośredni dostęp do pamięci
wirtualnej (DVMA) z wykorzystaniem adresów wirtualnych.
Płyty WE/WY komputerów PC służące do zarządzania szyną zwykle
posiadają własny sprzęt DMA dużej szybkości.
12
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Etapy przesyłania w trybie DMA
Etapy przesyłania w trybie DMA
1. Moduł sterujący urządzenia otrzymuje polecenie
przesłania danych dyskowych do bufora pod adresem
ADDR.
2. Moduł sterujący urządzenia zawiadamia dysk o potrzebie
przesłania X bajtów do bufora pod adresem ADDR.
3. Sterownik dysku rozpoczyna przesyłanie DMA.
4. Sterownik dysku wysyła bajt za bajtem do sterownika
DMA.
5. Sterownik DMA przesyła bajty do bufora, zwiększając
adres pamięci i zmniejszając X dopóty, dopóki X jest
różne od 0.
6. Kiedy X=0, wtedy sterownik DMA przerywa pracÄ™
procesora w celu zasygnalizowania zakończenia
przesyłania.
13
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Etapy przesyłania w trybie DMA (schemat)
(schemat)
Etapy przesyłania w trybie DMA
14
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Użytkowy interfejs we-wy
Użytkowy interfejs we-wy
Metody strukturalizacji oraz interfejsy systemu operacyjnego umożliwiają
standardowe, jednolite traktowanie urządzeń WE/WY.
Często zaniedbuje się detale różniące między sobą urządzenia WE/WY
wydzielając kilka ogólnych ich rodzajów.
Dostęp do każdego z tych rodzajów odbywa się za pomocą odpowiedniego
interfejsu (ustandaryzowany zbiór funkcji).
Szczegóły dotyczące poszczególnych urządzeń zamknięte są w modułach
jądra zwanych modułami sterującymi.
Urządzenia różnią się między sobą pod wieloma względami:
Tryb przesyłania danych: strumień znaków (np. terminal) lub bloki (np. dysk).
Sposób dostępu: sekwencyjny (np. modem) lub swobodny (np. dysk).
Organizacja przesyłania: synchroniczna (np. taśma), asynchroniczna
(klawiatura).
Sposób użytkowania: dzielenie (np. dysk) lub wyłączność (np. taśma).
Szybkość działania: od kilku bajtów na sekundę do kilku gigabajtów na sekundę.
Kierunek przesyłania: tylko czytanie (CD-ROM), tylko pisanie (sterownik
graficzny), czytanie i pisanie (dysk).
Większość systemów posiada system obejścia (escape system) lub
 bocznych drzwi (back door) umożliwiający przekazanie w sposób
przezroczysty dowolnego polecenia od aplikacji do modułu sterującego (np.
funkcja systemowa ioctl w systemie UNIX).
15
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Struktura oprogramowania we-wy w jÄ…drze
Struktura oprogramowania we-wy w jÄ…drze
OPROGRAMOWANIE
JÄ…dro
Podsystem wejścia-wyjścia w jądrze
Moduł Moduł Moduł Moduł Moduł Moduł
sterujÄ…cy sterujÄ…cy sterujÄ…cy sterujÄ…cy sterujÄ…cy sterujÄ…cy
urzÄ…dzenia urzÄ…dzenia szyny PCI dyskietek klawiatury myszki
. . . . .
SCSI ATAPI
Sterowniki odpowiednich urządzeń
Urządzenie Urządzenie Szyna Napędy
SCSI ATAPI PCI dyskietek Klawiatura Myszka
SPRZT
16
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
UrzÄ…dzenia blokowe i znakowe
UrzÄ…dzenia blokowe i znakowe
Interfejs urządzenia blokowego (block device) dotyczy dostępu do
napędów dyskowych i innych urządzeń o działaniu blokowym.
Polecenia: czytaj, pisz i szukaj (dla urządzeń o dostępie bezpośrednim).
Dostęp do urządzenia w aplikacjach zwykle poprzez interfejs systemu
plików.
Możliwy jest też dostęp w trybie surowego wejścia-wyjścia (raw I/O), w
którym urządzenie traktowane jest jak zwykła, liniowa tablica bloków.
Dostęp do plików odwzorowywanych w pamięci (memory-mapped)
zwykle tworzy warstwę powyżej modułów sterujących urządzeń 
umożliwia on dostęp do pamięci dyskowej za pośrednictwem tablicy bajtów
w pamięci operacyjnej.
Interfejs urządzenia znakowego (character device) dotyczy obsługi
urządzeń przetwarzających liniowy strumień bajtów, takich jak
klawiatury, myszki, modemy, drukarki, karty dzwiękowe itp.
Podstawowe polecenia: pobranie (get) i przekazanie (put) jednego znaku.
Oprogramowanie biblioteczne znajdujące się powyżej tego interfejsu
udostępnia jednorazowe przesyłanie całych wierszy tekstu z możliwością
ich buforowania i edytowania liniowego (np. używając klawisza
backspace).
17
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
UrzÄ…dzenia sieciowe
UrzÄ…dzenia sieciowe
Sieciowe WE/WY różni się znacznie od WE/WY dyskowego, dlatego
większość systemów operacyjnych udostępnia specjalny, sieciowy
interfejs WE/WY (network I/O interface).
Systemy UNIX/Linux oraz Windows NT/9x/2000/XP posiadajÄ… interfejs
gniazda sieciowego (socket).
Gniazdo oddziela protokół sieciowy od operacji sieciowej.
Aplikacja tworzy gniazdo lokalne i Å‚Ä…czy je ze zdalnym adresem
(związanym z gniazdem utworzonym przez inną aplikację), następnie
nasłuchuje, czy któraś ze zdalnych aplikacji podłączyła się do gniazda
lokalnego. Za pomocą takiego połączenia aplikacja wysyła i odbiera
pakiety.
Aby ułatwić implementację serwerów, dostarczana jest funkcja wybierz
(select) do zarządzania zbiorem gniazd i informowania, które gniazda mają
nie odebrane pakiety, a które mają miejsce by przyjąć nowy pakiet (uwalnia
od konieczności odpytywania i aktywnego czekania).
Zrealizowano też wiele innych technik komunikacji międzyprocesowej i
komunikacji sieciowej:
UNIX: potoki nienazwane, potoki nazwane (FIFO), strumienie, kolejki
komunikatów, zdalne wywołanie procedury (remote procedure call  RPC).
Windows NT: interfejsy do kart sieciowych oraz do protokołów sieciowych.
18
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Zegary i czasomierze
Zegary i czasomierze
Większość komputerów jest zaopatrzona w sprzętowe zegary i
czasomierze, które spełniają trzy podstawowe funkcje:
podawanie bieżącego czasu,
podawanie upływającego czasu,
powodowanie wykonania operacji X w chwili T.
Sprzęt służący do spełniania dwóch ostatnich funkcji nazywa się
czasomierzem programowalnym (programmable interval timer).
Po upływie nastawionego czasu powoduje przerwanie.
Można go nastawić na jednorazowe wykonanie czynności lub na
periodyczne generowanie przerwań.
Z czasomierza korzysta:
Planista przydziału procesora przy wywłaszczaniu procesu po upływie
przydzielonego mu kwantu czasu.
Podsystem dyskowego WE/WY w celu okresowego zapisywania na
dysk zawartości zmodyfikowanych buforów podręcznych.
Podsystem sieciowy w celu anulowania operacji, które są wykonywane
za wolno (wskutek przeładowania sieci lub awarii).
Interfejs czasomierza może być udostępniony procesom użytkowym.
Rozdzielczość czasomierza wynosi od 18 do 60 tyknięć na sekundę (mała).
19
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
BlokujÄ…ce i nieblokujÄ…ce we-wy
BlokujÄ…ce i nieblokujÄ…ce we-wy
Wykonanie przez proces blokującego (blocking) wywołania
systemowego WE/WY powoduje wstrzymanie jego działania do czasu
zakończenie wykonywania tego wywołania .
Kod aplikacji z blokowaniem jest łatwiejszy do zrozumienia i użycia.
NiewystarczajÄ…ce dla pewnych potrzeb, np. klawiatura (mysz) i ekran.
Nieblokujące (nonblocking) wywołanie systemowe WE/WY nie
wstrzymuje wykonywania aplikacji na dłuższy czas, lecz kończy się
szybko, przekazując informację o liczbie przesłanych bajtów (niezależnie
od tego, ile zamówionych bajtów zdoła przekazać).
Stosowane np. w interfejsach użytkownika, w których sygnały z klawiatury i
myszki przeplatają się z przetwarzaniem i wyświetlaniem danych na ekranie.
Mogą być implementowanie przez wielowątkowość  podczas gdy jedne wątki
są blokowane przez operacje WE/WY, inne mogą kontynuować działanie.
Asynchroniczne odwołanie do systemu  powrót następuje
natychmiast, bez czekania na zakończenie operacji WE/WY.
Aplikacja kontynuuje wykonywanie swojego kodu.
Zakończenie operacji WE/WY następuje po pewnym czasie i zostaje
zakomunikowane przez ustawienie pewnej zmiennej w przestrzeni adresowej
aplikacji, przekazania sygnału, przerwania programowego lub przywołania.
20
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Podsystem we-wy w jÄ…drze
Podsystem we-wy w jÄ…drze
Planowanie wejścia-wyjścia  określenie dobrego porządku
wykonywania operacji WE/WY:
Utrzymywanie kolejek zamówień do każdego urządzenia.
Planista WE/WY ustala porządek w kolejce tak, aby polepszyć ogólną
wydajność systemu i zmniejszyć czas odpowiedzi.
System operacyjny może też próbować być sprawiedliwym, tzn. dbać o to,
aby żadna z aplikacji nie była zle obsługiwana, dawać pierwszeństwo
obsłudze pilnych zamówień itp.
Buforowanie (buffering)  przechowywanie danych w obszarze
pamięci, zwanym buforem, w trakcie ich przesyłania między
urządzeniami lub między urządzeniem a aplikacją. Umożliwia ono:
Usunięcie dysproporcji między szybkościami strumieni danych producenta i
konsumenta (np. zapisywanie na dysku pliku przesyłanego przy pomocy
modemu); często stosuje się podwójne buforowanie (dwa bufory: po
zapełnieniu pierwszego bufora, drugi bufor jest zapisywany, a pierwszy w
tym czasie opróżniany)  usprawnia przesyłanie danych.
Dopasowanie urządzeń o różnych rozmiarach przesyłanych jednostek
danych.
Zapewnienie semantyki kopii na wejściu i wyjściu aplikacji  najczęściej
realizowane przez kopiowanie danych aplikacji do bufora jÄ…dra i
udostępnianie ich do dalszych operacji za pośrednictwem tego bufora.
21
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Podsystem we-wy w jÄ…drze 2
Podsystem we-wy w jÄ…drze 2
Przechowywanie podręczne (caching)  kopie danych
przechowywane są w szybkiej pamięci podręcznej (cache):
Dostęp do kopii w pamięci podręcznej jest szybszy niż dostęp do oryginału,
np. instrukcje wykonywanego procesu są pamiętane na dysku,
przechowywane podręcznie w pamięci operacyjnej oraz kopiowane do
pamięci podręcznej procesora.
Różni się od buforowania tym, że bufor może zawierać jedyną kopię
danych.
Jest kluczowe dla wydajności systemu.
Spooling  użycie bufora do przechowywania danych przeznaczonych
dla urządzenia, które nie dopuszcza przeplatania danych w
przekazywanym mu strumieniu (np. drukarka).
W niektórych systemach zarządzany przez proces systemowego demona,
a w innych obsługiwany przez wątek w jądrze.
System operacyjny dostarcza interfejsu, który umożliwia użytkownikom
wyświetlanie kolejek, usuwania niepotrzebnych zadań z kolejki itp.
Rezerwacja urządzeń  dostarczanie jawnych środków dostępu:
Specjalne funkcje systemowe umożliwiające przydzielanie i zwalnianie
urządzeń (np. Windows NT).
Unikanie zakleszczeń należy do obowiązków aplikacji.
22
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Podsystem we-wy w jÄ…drze 3
Podsystem we-wy w jÄ…drze 3
Obsługa błędów (error handling):
Systemy operacyjne mogą przeciwdziałać pewnym awariom przejściowym,
np. błąd czytania z dysku można naprawić powtarzając czytanie, błąd
transmisji sieciowej  powtórną transmisją itp.
Większość systemowych wywołań WE/WY zwraca krótką informację
określającą skutek wywołania: sukces lub porażka, np. w systemie UNIX
większość funkcji systemowych zwraca wartość  1 w przypadku
niepowodzenia i ustawia dodatkowo zmienną całkowitą errno na kod
błędu, który wskazuje na odpowiednią pozycję w tablicy komunikatów
informujących ogólnie o charakterze błędu.
Niektóre rodzaje sprzętu dostarczają szczegółowych informacji o błędach,
jednak nie wszystkie systemy operacyjne udostępniają je użytkownikom.
Struktury danych jądra  jądro musi przechowywać informacje o
stanie używanych składowych WE/WY; używa do tego rozmaitych,
wewnętrznych struktur danych.
Np. uniksowy system plików udostępnia różne obiekty, jak pliki
użytkowników, surowe urządzenia i przestrzenie adresowe procesów 
różnice te obudowuje się jednolitą strukturą za pomocą metod obiektowych.
Niektóre systemy operacyjne używają metod obiektowych i mechanizmów
przekazywania komunikatów do realizacji WE/WY (np. Windows NT).
23
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Struktura we-wy w jÄ…drze Unix
Struktura we-wy w jÄ…drze Unix
Ogólnosystemowa tablica otwartych plików
Rekord systemu plików Tablica
Wskaznik do i-węzła aktywnych
Wskaznik do funkcji read i write aktywnych-
Wskaznik do funkcji select węzłów
Wskaznik do funkcji ioctl
Wskaznik do funkcji clone
.
.
Procesowa tablica
Deskryptor Rekord sieciowy (gnizda sieciowego) Tablica
otwartych plików
pliku Wskaznik do informacji o sieci informacji
Wskaznik do funkcji read i write sieciowych
Wskaznik do funkcji select
Wskaznik do funkcji ioctl
Wskaznik do funkcji clone
.
.
Pamięć procesu użytkownika
Pamięć jądra
24
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Przekształcanie zamówień we-wy na operacje
Przekształcanie zamówień we-wy na operacje
sprzętowe
sprzętowe
W jaki sposób system operacyjny wiąże pochodzące od aplikacji
zamówienie ze zbiorem kabli sieciowych lub sektorem na dysku?
Rozważmy czytanie pliku z dysku przez proces  niezbędne kroki:
Identyfikacja urządzenia, na którym znajduje się plik.
Przetłumaczenie nazwy na reprezentację urządzenia (adres portu itd.).
MS-DOS: pierwsza część nazwy ścieżkowej identyfikuje jednostkę sprzętu,
np. C: oznacza podstawowy dysk twardy  napis ten jest odwzorowywany w
określony adres portu za pomocą tablicy urządzeń.
UNIX: nazwy urządzeń są pamiętane w regularnej przestrzeni nazw systemu
plików (nie są wyróżnione)  przedrostki nazw ścieżek są związane z nazwami
poszczególnych urządzeń w tablicy montaży (mount table); nazwa
urządzenia ma również postać nazwy z przestrzeni systemu plików.
Odwzorowanie nazwy pliku za pomocą katalogów systemu plików na
informacje o miejscu przydzielonym plikowi, np. pozycja tablicy FAT w
systemie MS-DOS, numer i-węzła w systemie UNIX.
Fizyczne przeczytanie danych z dysku do bufora.
Udostępnienie danych zamawiającemu je procesowi.
Zwrócenie sterowania do procesu.
25
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Etapy wykonania zamówienia we-wy
Etapy wykonania zamówienia we-wy
Operacja we-wy zakończona, dane wejściowe są
Zamówienie we-wy
Proces
dostępne lub dane wyjściowe zostały wprowadzone
użytkownika
Powróć po wykonaniu odwołania do systemu
Odwołanie do systemu
Przesłanie (w razie potrzeby) danych do procesu oraz
TAK
Czy można już zrealizować
przekazanie informacji o poprawnym, lub błędnym
zamówienie?
zakończeniu
NIE
Podsystem
Wyślij zamówienie do modułu sterującego
wejścia  wyjścia
urzÄ…dzenia;
w jÄ…drze
w razie konieczności zablokuj proces
Określ, która operacja we-wy została zakończona.
Przetwórz zamówienie, wydaj polecenie
Moduł sterujący
Wskaż zmianę stanu podsystemowi we-wy
sterownikowi, zablokuj sterownik do chwili
urzÄ…dzenia
przerwania
Przyjmij przerwanie, przechowaj dane w buforze modułu
Procedura obsługi
sterującego urządzenia. Jeżeli była to operacje wejścia,
przerwania
wyślij sygnał odblokowujący moduł sterujący urządzenia
Polecenia sterownika urzÄ…dzenia
czas
Przerwanie
Sterownik
Sprawdz urządzenie, przerwij po zakończeniu
Operacje we-wy zakończyła się. Wygeneruj przerwanie
urzÄ…dzenia
operacji wejścia-wyjścia
26
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Strumienie systemu Unix
Strumienie systemu Unix
Strumień (stream) jest półdupleksowym (jednokierunkowym)
połączeniem między modułem sterującym a procesem poziomu
użytkownika.
Strumień składa się z:
Czoła strumienia (stream head)  interfejsu z procesem użytkownika,
Zakończenia sterującego (driver end)  nadzorującego urządzenie,
Dowolnej liczby modułów strumienia (stream modules) między czołem
strumienia a jego zakończeniem.
Każdy moduł zawiera kolejkę czytania (read queue) i kolejkę pisania
(write queue)  mogą realizować kontrolę przepływu.
Do przesyłania danych między kolejkami używany jest mechanizm
przekazywania komunikatów.
Moduły można umieszczać w strumieniu w celu dodawania do niego
funkcji w sposób warstwowy.
Np. proces może otworzyć port szeregowy za pomocą strumienia, do
którego wstawiony jest moduł redagowania nadchodzących danych.
Strumieniowe we/wy odbywa się asynchronicznie (oprócz czoła)
Strumieni można używać do komunikacji międzyprocesowej i sieciowej
(np. gniazda sÄ… zrealizowane za pomocÄ… strumieni).
27
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Struktura strumieni
Struktura strumieni
Proces użytkownika
Czoło strumienia
Kolejka czytania Kolejka pisania
Kolejka czytania Kolejka pisania
Mo
du
Å‚y
Kolejka czytania Kolejka pisania
Kolejka czytania Kolejka pisania
Zakończenie strujące
UrzÄ…dzenie
28
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Wydajność
Wydajność
Wejście-wyjście ma istotny wpływ na wydajność systemu
komputerowego.
Wymaga od procesora wykonywania modułu sterującego urządzenia, kodu
WE/WY jądra, blokowania i odblokowywania procesów.
Związane z obsługą WE/WY przełączanie kontekstu obciąża procesor i jego
sprzętową pamięć podręczną.
Obsługa przerwań jest także zadaniem względnie kosztownym (współczesne
komputery mogą obsługiwać setki przerwań na sekundę).
Kopiowanie danych jest operacją kosztowną i czasochłonną.
Ruch w sieci może dość znacznie obciążać system  powodując częste
zmiany kontekstu.
Wykorzystanie wielowątkowości na poziomie jądra może znacznie zwiększyć
wydajność poprzez eliminację kosztownych przełączeń kontekstu (np. system
Solaris).
W niektórych systemach do operacji WE/WY dotyczących terminali używa się
specjalizowanych procesorów czołowych (front-end processor):
Koncentrator terminali (terminal concentrator) może obsługiwać w jednym porcie
dużego komputera dane z setek zdalnych terminali.
Kanał wejścia-wyjścia (I/O channel)  wydzielony, specjalizowany procesor
przejmujący od procesora głównego obciążenia związane z operacjami WE/WY
(stosowany w wysokowydajnych systemach).
29
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Komunikacja międzykomputerowa
Komunikacja międzykomputerowa
System nadawczy System odbiorczy
Zakończenie odwołania do
Odebranie pakietu
Napisanie znaku
systemu
sieciowego
sprzęt
Przełączenie kontekstu
sprzęt
Wygenerowanie przerwania Obsłużenie przerwania
Adapter sieciowy
Przechowanie stanu Przechowanie stanu
Wygenerowanie przerwania
Obsłużenie przerwania Wygenerowanie przerwania
Przechowanie stanu
Moduł sterujący urządzenia Adapter sieciowy Moduł sterujący urządzenia
sieć
Jądro Moduł sterujący urządzenia Jądro Poddemon sieci
Przełączenie kontekstu Przełączenie kontekstu Przełączenie kontekstu
Proces użytkownika Jądro Demon sieci Jądro
Przełączenie Przełączenie
kontekstu kontekstu
30
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Poprawa wydajności
Poprawa wydajności
Zmniejszać liczbę przełączeń kontekstu.
Zmniejszać liczbę kopiowań danych w pamięci podczas
przekazywania ich od urzÄ…dzenia do aplikacji.
Zmniejszać częstość występowania przerwań przez stosowanie
wielkich przesłań i sprytnych (smart) sterowników, a także
odpytywania (o ile można zminimalizować aktywne czekanie).
Zwiększać współbieżność za pomocą sterowników pracujących w
trybie DMA lub kanałów, aby uwolnić procesor główny od zwykłego
przesyłania danych.
Realizować elementarne działania za pomocą sprzętu i pozwalać na
ich wykonywanie w sterownikach urządzeń współbieżnie z działaniem
szyny i procesora.
Równoważyć wydajność procesora, podsystemów pamięci, szyny i
operacji WE/WY dla osiągnięcia maksymalnej przepustowości (aby
przeciążenie w jednym miejscu nie powodowało bezczynności w
innych miejscach).
31
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Lokalizacja funkcji urządzeń zewnętrznych
Lokalizacja funkcji urządzeń zewnętrznych
Nowy algorytm
Nowy algorytm
W kodzie aplikacji
W kodzie aplikacji
W kodzie jÄ…dra
W kodzie jÄ…dra
W kodzie modułu urządzenia sterującego
W kodzie modułu urządzenia sterującego
W kodzie sterownika urządzenia (sprzęt)
W kodzie sterownika urządzenia (sprzęt)
W kodzie urządzenia (sprzęt)
W kodzie urządzenia (sprzęt)
32
Maciej J. Bargielski © 2009: Systemy operacyjne. System wejÅ›cia-wyjÅ›cia
Wzrost elastyczności
Wzrost wydajności
Wzrost stopnia abstrakcji
Wzrost kosztów opracowania
Wzrost nak adów czasu (generacji)
Wzrost nakłładów czasu (generacji)


Wyszukiwarka

Podobne podstrony:
pref 09
amd102 io pl09
2002 09 Creating Virtual Worlds with Pov Ray and the Right Front End
Analiza?N Ocena dzialan na rzecz?zpieczenstwa energetycznego dostawy gazu listopad 09
2003 09 Genialne schematy
09 islam
GM Kalendarz 09 hum
06 11 09 (28)

więcej podobnych podstron