Wejście-wyjście. Wiesław Płaczek Systemy Operacyjne: Wykład 10 1

Podobne dokumenty
Systemy wejścia-wyjścia. wyjścia

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Działanie systemu operacyjnego

System wejścia-wyjścia

Działanie systemu operacyjnego

SYSTEMY WEJŚCIA-WYJŚCIA

Systemy wejścia-wyjścia. wyjścia

Urządzenia wejścia-wyjścia

Budowa systemów komputerowych

Architektura komputerów

System wejścia-wyjścia

Architektura systemu komputerowego

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Struktura systemów komputerowych

Mikroprocesor Operacje wejścia / wyjścia

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Architektura komputerów. Układy wejścia-wyjścia komputera

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Urządzenia wej.-wyj. Plan (1) Plan (2)

Urządzenia wej.-wyj.

Urządzenia wej.-wyj. Plan (1) Plan (2) Rodzaje urządzeń wejściawyjścia

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Mechanizmy pracy równoległej. Jarosław Kuchta

Wstęp do informatyki. Interfejsy, urządzenia we/wy i komunikacja. Linie magistrali

LEKCJA TEMAT: Zasada działania komputera.

Architektura systemów komputerowych. dr Artur Bartoszewski

Systemy operacyjne system przerwań

Architektura komputera

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Układy wejścia/wyjścia

Technologia informacyjna. Urządzenia techniki komputerowej

URZĄDZENIA WEJŚCIA-WYJŚCIA

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Metody obsługi zdarzeń

Systemy Operacyjne i Sieci Komputerowe

Architektura komputerów

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

System plików. Warstwowy model systemu plików

Wprowadzenie do systemów operacyjnych

Proces y i y w i ąt ą ki

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Informatyka. informatyka i nauki komputerowe (computer science)

Programowanie współbieżne Wykład 2. Iwona Kochańska

Prezentacja systemu RTLinux

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Przerwania, polling, timery - wykład 9

Architektura i administracja systemów operacyjnych

Przerwania. Przerwania. Budowa systemu komputerowego. Zdarzenia powodujące przerwanie: Wektor przerwań

Przerwania. Przerwania. Budowa systemu komputerowego. Zdarzenia powodujące przerwanie: Wektor przerwań

Standard transmisji równoległej LPT Centronics

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

obszar bezpośrednio dostępny dla procesora rozkazy: load, store (PAO rejestr procesora)

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Wykład 2. Struktury systemów komputerowych. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 14. Zagadnienia związane z systemem IO

PRZERWANIA. P1 - Procedura obslugi przerwania. Obsługa zdarzenia Z1 poprzez procedurę obsługi przerwania P1

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Jądro systemu operacyjnego

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Działanie komputera i sieci komputerowej.

Urządzenia wejścia-wyjścia. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Klient-Serwer Komunikacja przy pomocy gniazd

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Urządzenia zewnętrzne

5. Model komunikujących się procesów, komunikaty

Wykład IV. Układy we/wy. Studia Podyplomowe INFORMATYKA Architektura komputerów

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko

4. Procesy pojęcia podstawowe

Architektura komputerów

dr inż. Jarosław Forenc

Celem wykładu jest omówienie zagadnień obsługi urządzeń wejścia-wyjścia (zwanych również urządzeniami zewnętrznymi lub peryferyjnymi) i realizacji

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

MAGISTRALE ZEWNĘTRZNE, gniazda kart rozszerzeń, w istotnym stopniu wpływają na

System operacyjny MACH

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

Zarządzanie pamięcią operacyjną

CompactPCI. PCI Industrial Computers Manufacturers Group (PICMG)

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

System komputerowy. System komputerowy

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Podstawy techniki cyfrowej i mikroprocesorowej II. Urządzenia wejścia-wyjścia

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Płyta główna (ang. motherboard) najważniejsza płyta drukowana urządzenia elektronicznego, na której zamontowano najważniejsze elementy urządzenia, umo

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Architektura systemów informatycznych

Architektura komputerów

Zarządzanie pamięcią w systemie operacyjnym

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Systemy operacyjne III

Systemy operacyjne System sieciowy UNIX-a

Architektura komputerów

1.1 Wprowadzenie Organizacja operacji we/wy System wejścia/wyjścia... 6

Transkrypt:

Wiesław Płaczek Systemy Operacyjne: Wykład 10 1 Wejście-wyjście Wprowadzenie. Sprzęt wejścia-wyjścia (WE/WY). Interfejs WE/WY. Podsystem WE/WY w jądrze. Przekształcenia zamówień WE/WY na operacje sprzętowe. Strumienie (STREAMS). Wydajność.

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. mysz komputerowa, dysk HD, nagrywarka CD/DVD) 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 wejściem-wyjściem. 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 wywołania systemowe tworzą standardowy interfejs między aplikacjami a systemem operacyjnym). Wiesław Płaczek Systemy Operacyjne: Wykład 10 2

Sprzęt wejścia-wyjścia Typowe urządzenia, z których korzystają komputery: Urządzenia pamięci: dyski, karty pamięci, taśmy itd. Urządzenia przesyłania danych: karty sieciowe, modemy itd. Urządzenia interfejsu z człowiekiem: ekran monitora, klawiatura, mysz itd. 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 posiada rejestry do pamiętania danych i sygnałów sterujących. Procesor czyta i zapisuje układy 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. Sterownik może też realizować operacje WE/WY odwzorowane w pamięci. Wiesław Płaczek Systemy Operacyjne: Wykład 10 3

Struktura szynowa typowego PC Dysk Monitor Sterownik graficzny Procesor Most lub sterownik pamięci Pamięć podręczna Pamięć operacyjna Szyna SCSI Sterownik SCSI Dysk Dysk Sterownik dysku IDE Dysk Dysk Szyna PCI Interfejs szyny rozszerzającej Szyna rozszerzająca Klawiatura Dysk Dysk Port równoległy Port szeregowy Wiesław Płaczek Systemy Operacyjne: Wykład 10 4

Port WE/WY Port wejścia-wyjścia składa się typowo z czterech rejestrów o następujących nazwach i funkcjach: Stan (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; jest czytany przez procesor główny. Sterowanie (control) jest zapisywany przez procesor główny w celu rozpoczęcia polecenia lub zmiany trybu pracy, np. ustalanie długości słowa, sprawdzanie parzystości itd. Dane wejściowe (data-in) jest czytany przez procesor główny w celu pobrania informacji z urządzenia. Dane wyjściowe (data-out) jest zapisywany przez procesor główny w celu wysłania informacji na wyjście. Ø Rejestry danych mają na ogół od 1 do 4 B, niektóre mają układy FIFO do przechowywania kilku bajtów (pomagają rozładowywać chwilowe spiętrzenia danych). Wiesław Płaczek Systemy Operacyjne: Wykład 10 5

v q 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: Sterownik zaznacza swój stan za pomocą bitu zajęte (busy) w rejestrze stanu: ustawia, gdy jest zajęty pracą, a czyści (tzn. zeruje) gdy jest gotów. Procesor sygnalizuje swoje życzenia za pomocą bitu gotowości polecenia (command-ready bit) w rejestrze poleceń (command register) część sterowania. 1. Procesor powtarza czytanie bitu zajęte w rejestrze stanu dopóki ten nie przyjmie wartości 0, tzn. wykonuje aktywne czekanie lub inaczej odpytywanie. 2. Kiedy bit zajęte przyjmie wartość 0, procesor ustawia bit pisania (write bit) w rejestrze poleceń i wpisuje bajt do rejestru danych wyjściowych. 3. Następnie procesor ustawia bit gotowości polecenia w rejestrze poleceń. 4. Gdy sterownik stwierdzi, że powyższy bit jest ustawiony, to ustawia bit zajęte. 5. Sterownik czyta rejestr poleceń i rozpoznaje polecenie pisania, następnie czyta bajt z rejestru danych wyjściowych i wykonuje na urządzeniu operację WE/WY. 6. Na koniec sterownik czyści bit gotowości polecenia w rejestrze poleceń, bit błędu (error bit) w rejestrze stanu (operacja się powiodła) oraz bit zajęte w rejestrze stanu sygnalizując, że zakończył działanie. Ø Schemat odpytywania można stosować wówczas, gdy sterownik i urządzenie są szybkie, natomiast dla powolnych urządzeń marnuje się dużo czasu procesora. Wiesław Płaczek Systemy Operacyjne: Wykład 10 6

Przerwania (Interrupts) Osprzęt procesora ma ścieżkę zwaną linią żądania przerwania. 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 żądania przerwania. Procesor przechwytuje przerwanie i ekspediuje je do procedury obsługi przerwania. Procedura obsługi czyści przerwanie obsługując urządzenie WE/WY. Podstawowy mechanizm przerwania umożliwia procesorowi reagowanie na zdarzenia asynchroniczne, np. gotowość sterownika. W większości procesorów są dwie linie żądania przerwań: Przerwania niemaskowalne, np. nieusuwalne błędy pamięci; Przerwania maskowalne (mascable) 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. Wiesław Płaczek Systemy Operacyjne: Wykład 10 7

Wiesław Płaczek Systemy Operacyjne: Wykład 10 8 Cykl WE/WY sterowany przerwaniem Procesor 1 Moduł sterujący urządzenia rozpoczyna operację WE/WY Między rozkazami procesor sprawdza występowanie przerwań 2 Sterownik WE/WY Rozpoczęcie operacji WE/WY 3 7 Procesor przyjmuje przerwanie i przekazuje sterowanie procedurze obsługi przerwania 4 Gotowość wejścia, wyjście zakończone lub błąd wytworzenie sygnału przerwania 5 Procedura obsługi przerwania przetwarza dane i wykonuje powrót po przerwaniu 6 Procesor podejmuje wykonywanie przerwanego działania

Tablica wektora zdarzeń procesora Intel Pentium Numer wektora Opis 0 Błąd dzielenia 1 Wyjątek diagnostyczny 2 Przerwanie puste 3 Punkt kontrolny 4 Wykryty nadmiar INTO 5 Wyjątek granicy przedziału 6 Niedozwolony kod operacji 7 Urządzenie niedostępne 8 Błąd podwojenia 9 Przepełnienie segmentu koprocesora (zarezerwowane) 10 Niedozwolony segment stanu zadania 11 Brak segmentu 12 Błąd stosu 13 Ochrona ogólna 14 Błąd (brak) strony 15 (zarezerwowane przez firmę Intel nie używać!) 16 Błąd zmiennopozycyjny 17 Kontrola przylegania 18 Kontrola maszyny 19-31 (zarezerwowane przez firmę Intel nie używać!) 32-255 Przerwania maskowalne (np. generowane przez urządzenia) Wiesław Płaczek Systemy Operacyjne: Wykład 10 9

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óźnianie obsługi bez maskowania). Inne zastosowania mechanizmu 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 (page fault). 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 jądra i przejście do wykonania odpowiedniej procedury jądra (mają relatywnie niskie priorytety). Do zarządzania przebiegiem sterowania w jądrze, np. dyskowe operacje WE/WY za pośrednictwem bufora jądra są obsługiwane przez parę procedur obsługi przerwania. 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 jako środek przechodzenia do procedur jądra wykonywanych w trybie nadzorcy. Wiesław Płaczek Systemy Operacyjne: Wykład 10 10

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. L 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 rozpocząć przesyłanie procesor główny zapisuje w pamięci blok sterujący DMA, zawierający wskaźnik do źródła przesyłania, wskaźnik do miejsca docelowego przesyłania oraz liczbę bajtów do przesłania. Następnie procesor główny zapisuje adres bloku sterującego DMA w sterowniku DMA i przechodzi do kontynuowania innych prac. Sterownik DMA przejmuje bezpośredni nadzór nad szyną pamięci. Uzgadnianie przesyłania (handshaking) 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). Kiedy przesyłanie danych między urządzeniem WE/WY a pamięcią się zakończy, sterownik DMA powiadamia o tym procesor główny wysyłając mu przerwanie. 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. Wiesław Płaczek Systemy Operacyjne: Wykład 10 11

Wiesław Płaczek Systemy Operacyjne: Wykład 10 12 5. Sterownik DMA przesyła bajty do bufora X, zwiększając adres pamięci i zmniejszając C dopóty, dopóki C jest różne od 0. 6. Kiedy C=0, wtedy sterownik DMA przerywa pracę procesora w celu zasygnalizowania zakończenia przesyłania. Etapy przesyłania w trybie DMA 1. Moduł sterujący urządzenia otrzymuje polecenie przesłania danych dyskowych do bufora pod adresem X. 2. Moduł sterujący urządzenia zawiadamia dysk o potrzebie przesłania C bajtów do bufora pod adresem X. DMA, szyna, sterownik przerwań Procesor Pamięć podręczna Szyna pamięci procesora Pamięć operacyjna X Bufor Sterownik dysku IDE Dysk Dysk 3. 4. Sterownik dysku rozpoczyna przesyłanie DMA. Sterownik dysku wysyła bajt za bajtem do sterownika DMA. Szyna PCI Dysk Dysk

Interfejs WE/WY Metody abstrakcji, enkapsulacji i 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 urządzeń odbywa się za pomocą odpowiedniego interfejsu, czyli standaryzowanego zbioru funkcji. Szczegóły dotyczące poszczególnych urządzeń są zamknięte (enkapsulowane) w modułach jądra zwanych modułami sterującymi urządzeń (device drivers). 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. drukarka) lub swobodny (np. dysk). Organizacja przesyłania: synchroniczna (np. taśma), asynchroniczna (klawiatura). Sposób użytkowania: współdzielenie (np. dysk) lub wyłączność (np. taśma). Szybkość działania: od bajtów na sekundę do gigabajtów na sekundę. Kierunek przesyłania: tylko czytanie (np. CD-ROM), tylko pisanie (np. sterownik graficzny), czytanie i pisanie (np. dysk). Większość systemów posiada system obejścia (escape system), czyli tylne drzwi (back door), umożliwiający przekazanie w sposób transparentny dowolnego polecenia od aplikacji do modułu sterującego urządzenia bez konieczności dodawania nowego wywołania systemowego, np. ioctl() w Uniksie. Wiesław Płaczek Systemy Operacyjne: Wykład 10 13

Struktura WE/WY w jądrze Oprogramowanie Moduł sterujący urządzenia SCSI Moduł sterujący klawiatury Jądro Podsystem wejścia-wyjścia w jądrze Moduł sterujący myszy... Moduł sterujący szyny PCI Moduł sterujący dyskietek Moduł sterujący urządzenia ATAPI Sprzęt Sterownik urządzenia SCSI Urządzenia SCSI Sterownik klawiatury Klawiatura Sterownik myszy Mysz...... Sterownik szyny PCI Szyna PCI Sterownik dyskietek Napędy dyskietek Sterownik urządzenia ATAPI Urządzenia ATAPI (dyski, taśmy, napędy) Wiesław Płaczek Systemy Operacyjne: Wykład 10 14

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 takiego urządzenia odbywa się 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 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, myszy, modemy, drukarki, karty dźwię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). Wiesław Płaczek Systemy Operacyjne: Wykład 10 15

Urządzenia sieciowe Sieciowe WE/WY różni się znacznie od dyskowego WE/WY, dlatego większość systemów operacyjnych udostępnia specjalny, sieciowy interfejs WE/WY (network I/O interface). Systemy rodziny UNIX oraz MS Windows XP/Vista/7/8 posiadają interfejs gniazda sieciowego (socket). Wywołania systemowe w tym interfejsie umożliwiają aplikacji utworzenie gniazda lokalnego w celu połączenia ze zdalnym adresem (związanym z gniazdem utworzonym przez inną aplikację) oraz nasłuchiwanie, czy któraś ze zdalnych aplikacji podłączyła się do gniazda lokalnego; za pomocą takiego połączenia aplikacja wysyła i odbiera pakiety informacji. 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: interfejsy do kart sieciowych oraz do protokołów sieciowych. Wiesław Płaczek Systemy Operacyjne: Wykład 10 16

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 czasu 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: w Planista przydziału procesora przy wywłaszczaniu procesu po upływie przydzielonego mu kwantu czasu. w Podsystem dyskowego WE/WY w celu okresowego zapisywania na dysk zawartości zmodyfikowanych buforów podręcznych (w pamięci operacyjnej). w 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żytkownika. Rozdzielczość czasomierza wynosi od 18 do 60 tyknięć na sekundę (mała). Wiesław Płaczek Systemy Operacyjne: Wykład 10 17

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ńczenia wykonywania tego wywołania. J Kod aplikacji z blokowaniem jest łatwiejszy do zrozumienia i użycia. L 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. Stosowane np. w interfejsach użytkownika, w których sygnały z klawiatury i myszy 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 (np. biblioteka poziomu użytkownika w systemie Solaris). 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, przekazanie sygnału, przerwanie programowe lub przywołanie. Wiesław Płaczek Systemy Operacyjne: Wykład 10 18

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 źle obsługiwana lub 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ą; powody: Dysproporcje między szybkościami producenta i konsumenta strumienia danych (np. zapisywanie pliku na dysku 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 to 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. Wiesław Płaczek Systemy Operacyjne: Wykład 10 19

Tablica stanów urządzeń Urządzenie: klawiatura Stan: bezczynne Urządzenie: drukarka Stan: zajęte Urządzenie: mysz Stan: bezczynność Zamówienie na drukarkę adres: 38546 długość: 1372 Urządzenie: dysk 1 Stan: bezczynność Urządzenie: dysk 2 Stan: zajęte Zamówienie na dysk 2 plik: xxx operacja: czytaj adres: 43046 długość: 20000 Zamówienie na dysk 2 plik: yyy operacja: pisz adres: 03458 długość: 500 Wiesław Płaczek Systemy Operacyjne: Wykład 10 20

Szybkości przesyłania w urządzeniach komputera Sun Enterprise 6000 Wiesław Płaczek Systemy Operacyjne: Wykład 10 21

Podsystem WE/WY w jądrze c.d. 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 podstawowej 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 (spool) 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; buforem jest plik dyskowy. System operacyjny dostarcza interfejsu, który umożliwia użytkownikom wyświetlanie kolejek, usuwanie niepotrzebnych zadań z kolejki itp. Rezerwacja urządzeń środki dostępu urządzenia na wyłączność: Specjalne funkcje systemowe pozwalające procesom między sobą koordynować wyłączność dostępu (np. funkcja open() w MS Windows). Unikanie zakleszczeń należy do obowiązków aplikacji. Wiesław Płaczek Systemy Operacyjne: Wykład 10 22

Podsystem WE/WY w jądrze c.d. 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. Jądrowe struktury danych WE/WY 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 wiele różnych obiektów: pliki użytkowników, surowe urządzenia, przestrzenie adresowe procesów różnice te obudowane są metodami obiektowymi w jednolitą strukturę. Niektóre systemy operacyjne używają metod obiektowych i mechanizmów przekazywania komunikatów do realizacji WE/WY (np. Windows NT). Wiesław Płaczek Systemy Operacyjne: Wykład 10 23

Wiesław Płaczek Systemy Operacyjne: Wykład 10 24 Struktura WE/WY w jądrze UNIX Deskryptor pliku Procesowa tablica otwartych plików Ogólnosystemowa tablica otwartych plików Rekord systemu plików Wskaźnik i-węzła Wskaźnik do funkcji read i write Wskaźnik do funkcji select Wskaźnik do funkcji ioctl Wskaźnik do funkcji close Tablica aktywnych i-węzłów Pamięć procesu użytkownika Rekord sieciowy (gniazda) Wskaźnik do informacji o sieci Wskaźnik do funkcji read i write Wskaźnik do funkcji select Wskaźnik do funkcji ioctl Wskaźnik do funkcji close Pamięć jądra Tablica informacji sieciowych

Wiesław Płaczek Systemy Operacyjne: Wykład 10 25 Podsystem WE/WY podsumowanie v Podsystem WE/WY w jądrze nadzoruje: Zarządzanie przestrzenią nazw plików i urządzeń. Kontrolowanie dostępu do plików i urządzeń. Poprawność operacji. Przydzielanie przestrzeni systemu plików. Przydzielanie urządzeń. Buforowanie, przechowywanie podręczne oraz spooling. Planowanie operacji WE/WY. Doglądanie stanu urządzeń, obsługę błędów oraz czynności naprawcze po awarii. Konfiguracja i inicjalizacja modułu sterującego urządzenia. Ø Dostęp do urządzeń na górnych poziomach podsystemu WE/WY odbywa się za pomocą jednolitego interfejsu dostarczanego przez moduły sterujące urządzeń (device drivers).

Przekształcenia zamówień WE/WY na operacje sprzętowe Ø W jaki sposób system operacyjny wiąże pochodzące od aplikacji zamówienie ze zbiorem kabli sieciowych lub sektorem na dysku? q Rozważmy czytanie pliku z dysku przez proces niezbędne kroki: Identyfikacja urządzenia, na którym znajduje się plik. Przetłumaczenie nazwy urządzenia na jego reprezentację, np. adres portu. w 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ń. w 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 na dysku, np. pozycja tablicy FAT w systemie MS-DOS, numer i-węzła w systemie UNIX. Fizyczne przeczytanie danych z dysku do bufora w pamięci. Udostępnienie danych zamawiającemu je procesowi. Zwrócenie sterowania do procesu. Wiesław Płaczek Systemy Operacyjne: Wykład 10 26

Etapy wykonania zamówienia WE/WY Zamówienie WE/WY Wywołanie funkcji systemowej Czy można już zrealizować zamówienie? Nie Wyślij zamówienie do modułu sterującego urządzenia, w razie konieczności zablokuj proces Tak Proces użytkownika Podsystem WE/WY w jądrze Podsystem WE/WY w jądrze Operacja WE/WY zakończona, dane wejściowe są dostępne lub dane wyjściowe zostały wyprowadzone Powrót po zakończeniu funkcji systemowej Prześlij (w razie potrzeby) dane do procesu, zwróć kod poprawnego lub błędnego zakończenia Przetwórz zamówienie, wydaj polecenie sterownikowi, zablokuj sterownik do chwili przerwania Polecenie sterownika urządzenia Monitoruj urządzenie, przerwij po zakończeniu operacji WE/WY Moduł sterujący urządzenia Procedura obsługi przerwania Sterownik urządzenia Określ, która operacja WE/WY została zakończona, wskaż zmianę stanu podsystemowi WE/WY Przyjmij przerwanie, przechowaj dane w buforze modułu sterującego urządzenia, jeżeli była to operacja wejścia, wyślij sygnał odblokowujący moduł sterujący urządzenia Przerwanie Operacja WE/WY zakończyła się, wygeneruj przerwanie Czas Wiesław Płaczek Systemy Operacyjne: Wykład 10 27

Strumienie (STREAMS) Strumienie (streams) są mechanizmem Uniksa Systemu V umożliwiającym aplikacjom dynamiczne tworzenie modularnych programów obsługi urządzeń. Strumień jest dwukierunkowym (full-duplex) połączeniem między modułem sterującym urządzenia a procesem poziomu użytkownika składa się z: Czoła strumienia (stream head) interfejs z procesem użytkownika. Zakończenia modułu sterującego (driver end) nadzoruje 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 za pomocą wywołania systemowego ioctl(). q Np. proces może otworzyć port szeregowy za pośrednictwem strumienia i wstawić do niego moduł umożliwiający redagowanie danych wejściowych. Strumieniowe WE/WY poniżej czoła strumienia odbywa się asynchronicznie. W wielu odmianach Uniksa (ale nie w Linuksie!) strumienie są preferowaną metodą pisania protokołów i modułów sterujących urządzeń (device drivers), np. UNIX System V oraz Solaris używają strumieni do implementacji gniazd. Wiesław Płaczek Systemy Operacyjne: Wykład 10 28

Wiesław Płaczek Systemy Operacyjne: Wykład 10 29 Struktura strumieni Proces użytkownika Czoło strumienia Kolejka czytania Kolejka pisania Kolejka czytania Kolejka czytania Kolejka pisania Kolejka pisania Moduły Kolejka czytania Kolejka pisania Zakończenie modułu sterującego Urządzenie

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 (choć współczesne komputery mogą obsługiwać wiele tysięcy 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 operacyjny 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 sposób przeplatany 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 systemach wysokiej wydajności (high-end systems). Wiesław Płaczek Systemy Operacyjne: Wykład 10 30

Wiesław Płaczek Systemy Operacyjne: Wykład 10 31 Komunikacja międzykomputerowa i jej koszty Napisanie znaku Moduł sterujący urządzenia System nadawczy Sprzęt Wygenerowanie przerwania Przechowanie stanu Obsłużenie przerwania Zakończenie odwołania do systemu Przełączenie kontekstu Obsłużenie przerwania Przechowanie stanu Wygenerowanie przerwania Adapter sieciowy Sieć Odebranie pakietu sieciowego System odbiorczy Sprzęt Adapter sieciowy Wygenerowanie przerwania Przechowanie stanu Moduł sterujący urządzenia Jądro Przełączenie kontekstu Proces użytkownika Moduł sterujący urządzenia Przełączenie kontekstu Jądro Jądro Przełączenie kontekstu Demon sieci Przełączenie kontekstu Poddemon sieci Przełączenie kontekstu Jądro

Wiesław Płaczek Systemy Operacyjne: Wykład 10 32 Poprawa wydajności Zmniejszać liczbę przełączeń kontekstu. Zmniejszać liczbę kopiowań danych w pamięci podczas przekazywania ich między urządzeniem a aplikacją. Zmniejszać częstość występowania przerwań przez stosowanie wielkich przesłań i inteligentnych (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.

Lokalizacja funkcji WE/WY Wiesław Płaczek Systemy Operacyjne: Wykład 10 33 Nowy algorytm Wzrost nakładów czasu pracy Wzrost wydajności Wzrost kosztów opracowania Wzrost stopnia trudności W kodzie aplikacji W kodzie jądra W kodzie modułu sterującego urządzenia W kodzie sterownika urządzenia (sprzęt) W kodzie urządzenia (sprzęt) Wzrost elastyczności

Zagadnienia 1. Przedstawić podstawowe klasy urządzeń WE/WY oraz omówić typowe elementy sprzętowe WE/WY. Jak wygląda typowa komunikacja między procesorem a sterownikiem urządzenia? 2. Scharakteryzować strukturę rejestrów typowego portu WE/WY oraz omówić protokół komunikacji zwany uzgadnianiem (ang. handshaking). 3. Na czym polega mechanizm przerwań WE/WY, jakie są podstawowe linie przerwań, do czego służy wektor przerwań, jak wygląda typowy cykl WE/ WY sterowany przerwaniami? 4. Jak przebiegają operacje WE/WY w trybie DMA i czym różnią się od zwykłych operacji WE/WY sterowanych przerwaniami? Jakie są zalety oraz wady tego rozwiązania? 5. Przedstawić strukturę interfejsu WE/WY. Jakie są różnice między typowymi urządzeniami WE/WY? Omówić podstawowe kategorie urządzeń WE/WY. 6. Jakie są zadania podsystemu WE/WY w jądrze? Do czego służą i jak są realizowane jądrowe struktury danych WE/WY? 7. Jak odbywa się przekształcanie zamówień WE/WY na operacje sprzętowe? Jakie są główne etapy wykonania zamówienia WE/WY? Czym jest, jaką ma strukturę i do czego służy mechanizm STREAMS? 8. Przedstawić kwestie wydajności WE/WY oraz podać metody jej poprawy. Wiesław Płaczek Systemy Operacyjne: Wykład 10 34