SYSTEMY WEJŚCIA-WYJŚCIA Systemy wejścia-wyjścia mają na celu umożliwienie wprowadzania informacji do komputera (wpisywanie tekstu, odczytywanie i zapisywanie danych na urządzeniach pamięci masowej itp.) oraz jego wyprowadzanie (np. wyświetlanie na monitorze, drukowanie) Zadania systemu operacyjnego wobec systemów we-wy: - sterowanie nimi - sprawowanie nad nimi nadzoru - wypełnienie luki między interfejsem aplikacji a interfejsem urządzenia Podsystem wejścia-wyjścia (ang. I/O subsystem) zbiór metod w jądrze systemu operacyjnego, przeznaczony do obsługi urządzeń I/O. Sprzęt wejścia-wyjścia: - pamięci masowe (dyski, taśmy) - urządzenia komunikacji z użytkownikiem (monitory, klawiatury, myszki), - urządzenie komunikacyjne (karty sieciowe, modemy) - inne urządzenia specjalistyczne (kierownice, manetki,...) Elementy niezbędne do komunikacji: - łącze (kablowe lub bezprzewodowe) - port (ew. szyna) łącznik pomiędzy urządzeniem a komputerem - protokół zbiór dozwolonych komunikatów służących do przekazywania informacji Szyna jako połączenie wielu urządzeń, umożliwiające ich komunikację: PCI - szyna standardowo stosowana w komputerach osobistych: SCSI (ang. small computer system interface) szybka szyna służąca m.in. do podłączenia dysków twardych
Sterownik (ang. controller) zespół układów elektronicznych będących w stanie kierować pracą portu, szyny lub urządzenia (np. prosty sterownik portu szeregowego składa się z jednego układu scalonego). Sposoby przekazywania informacji do urządzenia: zapisywanie do rejestru sterownika zapisywanie do obszaru odwzorowanego rejestru w pamięci operacyjnej (tutaj np. starcze typu kart graficznych przechowują zawartość ekranu w ustalonym obszarze przestrzeni adresowej (fizycznej) procesora) Wymiana danych pomiędzy procesem biegnącym w procesorze a sterownikiem polega na: zapisywaniu informacji w rejestrze sterującym sterownika,
odczytywaniu informacji o aktualnym stanie sterownika z rejestru statutu, odczytywaniu i/lub zapisywaniu danych w rejestrze danych sterownika. Sposoby przekazywania informacji do urządzenia: zapisywanie do rejestru sterownika zapisywanie do obszaru odwzorowanego rejestru w pamięci operacyjnej (tutaj np. karty graficzne przechowują zawartość ekranu) Rejestry portu we-wy: - stan (ang. status) - sterowanie (ang. controll) - dane wejściowe (ang. data-in) - dane wyjściowe (data-out) Uzgadnianie (ang.handshaking) sposób koordynowania współpracy procesor sterownik urządzenia: 1. procesor główny powtarza czytanie bitu zajętości, dopóki nie przyjmie wartości 0 - jest to tzw. aktywne oczekiwanie, czyli odpytywanie (ang. polling) 2. procesor główny ustawia bit pisania (ang. write bit) w rejestrze poleceń i wpisuje bajt do rejestru danych wejściowych 3. procesor główny ustawia bit gotowości poleceń 4. gdy sterownik zauważy, że bit gotowości polecenia jest ustawiony, wówczas ustawia bit zajętości 5. sterownik czyta rejestr poleceń i rozpoznaje polecenie pisania. Czyta więc bajt z rejestru danych wyjściowych i wykonuje na urządzeniu operacje we-wy 6. sterownik czyści bit gotowości polecenia oraz bit błędu (ang. error bit) w rejestrze stanu (powiadamia, że operacja we-wy zakończyła się pomyślnie) a następnie czyści bit zajętości (sygnalizuje zakończenie działania) Polling metoda oczekiwania na wystąpienie określonego stanu urządzenia lub grupy urządzeń o podobnej funkcji polegająca na
cyklicznym odpytywaniu (odczytywaniu) rejestru stanu urządzenia, wydajna jedynie, gdy urządzenie jest często gotowe do wykonania operacji. Bezpośredni dostęp do pamięci: PIO (Programmed Input/Output) programowane wyjście-wyjście - bezspośrednia obsługa urządzeń we-wy przez procesor główny. Gdy urządzenie (np. pamięć masowa) przekazuje do/z procesu duże ilości danych dostęp taki jest nieefektywny, ponieważ wymaga angażowania mocy procesora, a w środowisku wieloprocesowym również częstego przełączania procesów lub wykonywania operacji obsługi przerwań. DMA (Direct Memory Access) urządzenie we-wy obsługiwane jest przez wyspecjalizowany procesor, tzw. sterownik bezpośredniego dostępu do pamięci. W ten sposób procesor główny zostaje odciążony.
Uzgadnianie w trybie DMA pomiędzy sterownikiem DMA a sterownikiem urządzenia odbywa się za pomocą pary sygnałów: zamówieniem DMA (ang. DMA request) potwierdzeniem DMA (ang. DMA acknowledge) DVMA (ang. Direct Virtual Memory Access) bezpośredni dostęp do pamięci wirtualnej pozwala dokonywać przesyłania pomiędzy dwoma urządzeniami odwzorowanymi w pamięci (nie angażując procesora głównego). Użytkowy interfejs wejścia-wyjścia: Taka strukturalizacja systemu operacyjnego pozwala na jednolite traktowanie bardzo zróżnicowanych urządzeń we-wy (dzięki temu np. aplikacja może utworzyć plik na dysku, nie znając jego producenta i zestawu poleceń rejestru obsługujących ten dysk).
API - Interfejs (ang. Application Program Interface) w odniesieniu do systemów wejścia-wyjścia - ustandaryzowany zbiór funkcji pozwalających na dostęp do danego typu urządzeń. Moduły sterujące (popularnie: sterowniki lub drivery) moduły jądra systemu przystosowane do obsługi konkretnych typowych urządzeń działających zgodnie z standardowym interfejsem sprzętowym. Na zewnątrz udostępniają ustandaryzowany API. Mają na celu ukrywać różnice w poszczególnych urządzeniach przed podsystemem wejścia-wyjścia w jądrze. Producenci sprzętu niezgodnego z żadnym interfejsem sprzętowym dołączają specjalizowane moduły sterujące, które mają na celu stworzenie nowego interfejsu między urządzeniem a systemem operacyjnym (stąd moduły te są dedykowane do konkretnych systemów operacyjnych i konkretnych urządzeń).
Klasyfikacja urządzeń: Urządzenia blokowe (np. dysk): Urządzenia tego typu przesyłają duże ilości danych w blokach o określonej wielkości (512b, 1 kb, 4kB, 8kB...) z dużą szybkością. Jednostką przesyłania jest blok. Urządzenie tego typu wykonuje polecenia typu: czytaj blok(read), pisz blok(write). Dostęp z aplikacji do urządzeń blokowych: poprzez system plików, w trybie raw I/O. Tryb raw I/O (surowego wejścia wyjścia) urządzenie traktowane jak zwykła, liniowa tablica bloków. Metoda stosowana w przypadku jeśli aplikacja sama organizuje przestrzeń pamięci masowej (np. serwer bazy danych) Urządzenia znakowe (np. klawiatura): Urządzenia tego typu przesyłają małe ilości danych z niewielką częstotliwością. Jednostką przesyłania jest pojedynczy znak.
Urządzenie tego typu wykonuje polecenia: pobierz(get) jeden znak, przekaż(put) jeden znak. Urządzenia sieciowe: Interfejs gniazda sieciowego pozwala podłączyć się do innych procesów na tym samym lub innym komputerze, wysyłać i odbierać pakiety. Wyróżnia się dwie strony połączenia: aktywną (inicjującą połączenie) klient, pasywną (oczekującą na inicjację połączenia) serwer. Podstawowe polecenie: Zegary i czasomierze: Funkcje: - podawanie bieżącego czasu - podawanie upływającego czasu - powodowanie przez odpowiednio nastawiony czasomierz wykonania operacji X w chwili czasu T Czasomierz programowalny po upływie określonego czasu wywołuje przerwanie. Z niego korzysta m.in. planista przydziału procesora określa czas przyznawany poszczególnym procesom) podsystem dyskowego we-wy powoduje czasowe opróżnianie buforów podręcznych podsystem sieciowy kasuje operacje wykonywane zbyt długo (np. spowodowane awarią), odmierza okres tzw. timeout'u Buforowanie: Bufor (ang. buffer) obszar pamięci, w którym przechowuje się dane przesyłane między dwoma urządzeniami lub między urządzeniem a aplikacją. Powody buforowania: 1. dysproporcje między szybkością strumienia danych producenta i konsumenta
2. dopasowanie urządzeń przesyłających jednostki danych o różnych wielkościach 3. potrzeba zapewnienia semantyki kopii na wejściu i wyjściu (gwarantuje, że wersja danych zapisywana na dysku jest wersją z chwili odwołania się aplikacji do systemu niezależnie od późniejszych zmian w buforze aplikacji) bufor aplikacji -> bufor jądra -> zapis na dysku Pamięć podręczna (ang. cache) obszar szybkiej pamięci, w której przechowuje się kopie danych (dostęp do danych w cache u jest szybszy niż do oryginału). Różnica pomiędzy buforem a pamięcią podręczną: Bufor zawiera jedyną kopię struktury danych Cache obszar który zawiera kopię danych istniejących gdzie indziej Spooling i rezerwowanie urządzeń: Spooling użycie bufora do przechowywania danych przeznaczonych dla danego urządzenia, które jednak nie dopuszcza przeplatania danych w przeznaczonym dla niego strumieniu. M.in. drukarka może w danej chwili wykonywać tylko jedno zadanie, podczas gdy spooling umożliwia wielu aplikacjom gotowość do drukowania wyników współbieżnie. Dane wysyłane przez poszczególne aplikacje są gromadzone przez system operacyjny w osobnych plikach-buforach, po czym w drukowane w kolejności tworzenia plików-buforów.
Przekształcanie zamówień wejścia-wyjścia na operacje sprzętowe:
SYSTEM PLIKÓW NFS NFS (ang. Network File Sysytem) sieciowy system plików umożliwia dostęp do plików w zdalnych sieciach lokalnych. Dostępny w większości wersji systemu UNIX. Idea systemu: zbiór połączonych ze sobą stacji roboczych traktuje się jako zbiór niezależnych maszyn z niezależnymi systemami plików. Cel systemu: umożliwienie dzielenia zasobów między różnymi systemami plików. Operacja montowania: polega na podłączeniu zdalnego systemu plików do lokalnego w ten sposób, że wygląda on jak integralne poddrzewo lokalnego systemu plików. Przed zamontowaniem: Po zamontowaniu:
System NFS stworzony został z myślą o działaniu w heterogenicznym środowisku różnych maszyn, systemów operacyjnych i architektur sieciowych w związku z czym jest od nich niezależny (dzięki użyciu elementarnych wywołań RPC Remote Procedure Call zdalne wywoływanie procedur). Protokół NFS: dostarcza zbioru wywołań procedur zdalnych do obsługi zdalnych operacji plikowych. Możliwości protokołu: szukanie plików w obrębie katalogu czytanie zbioru wpisów katalogowych manipulowanie dowiązaniami i katalogami dostęp do atrybutów plików czytanie i pisanie plików Serwery NFS są bezstanowe nie utrzymują informacji o użytkownikach między jednym a drugim dostępem. Architektura NFS:
Warstwy systemu plików: 1. system plików UNIX umożliwia funkcje otwierania, czytania, pisania i zamykania plików oraz funkcje na deskryptorach plików 2. VFS (Virtual File System) wirtualny system plików a. oddziela operacje plikowe od ich implementacji b. zawiera v-węzły jednoznaczny w całej sieci oznacznik pliku Tłumaczenie nazwy ścieżki: odbywa się poprzez pocięcie ścieżki na nazwy składowe i wykonywanie osobnego przeszukania NFS dla każdej pary złożonej z nazwy składowej i v-węzła katalogu.