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



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

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Działanie systemu operacyjnego

SYSTEMY WEJŚCIA-WYJŚCIA

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

System wejścia-wyjścia

Działanie systemu operacyjnego

System wejścia-wyjścia

Architektura komputerów

Urządzenia wejścia-wyjścia

Architektura systemu komputerowego

Budowa systemów komputerowych

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

Mikroprocesor Operacje wejścia / wyjścia

Struktura systemów komputerowych

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

LEKCJA TEMAT: Zasada działania komputera.

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

Architektura systemów komputerowych. dr Artur Bartoszewski

Architektura komputerów

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

Systemy operacyjne system przerwań

Systemy Operacyjne i Sieci Komputerowe

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

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

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

Architektura komputera

Technologia informacyjna. Urządzenia techniki komputerowej

Metody obsługi zdarzeń

Układy wejścia/wyjścia

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

Wprowadzenie do systemów operacyjnych

URZĄDZENIA WEJŚCIA-WYJŚCIA

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

Proces y i y w i ąt ą ki

Przerwania, polling, timery - wykład 9

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

Jądro systemu operacyjnego

Prezentacja systemu RTLinux

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]

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

Urządzenia zewnętrzne

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

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

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

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

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

Architektura komputerów

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

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

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

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

System plików. Warstwowy model systemu plików

Architektura i administracja systemów operacyjnych

Klient-Serwer Komunikacja przy pomocy gniazd

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

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

Wybrane bloki i magistrale komputerów osobistych (PC) Opracował: Grzegorz Cygan 2010 r. CEZ Stalowa Wola

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

dokument DOK wersja 1.0

4. Procesy pojęcia podstawowe

System komputerowy. System komputerowy

SOE Systemy Operacyjne Wykład 8 Pamięć wirtualna dr inż. Andrzej Wielgus

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

Architektura Systemów Komputerowych

System wejścia-wyjścia

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

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

System operacyjny MACH

Informatyka. informatyka i nauki komputerowe (computer science)

dr inż. Jarosław Forenc

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

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

Zarządzanie pamięcią w systemie operacyjnym

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

Architektura komputerów

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

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

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

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

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

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

Architektura komputerów

Interfejs urządzeń peryferyjnych

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

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

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

Systemy operacyjne III

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

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Transkrypt:

Wiesław Płaczek Systemy Operacyjne: Wykład 9 1 Systemy wejścia-wyjścia wyjścia Wprowadzenie. Sprzęt wejścia-wyjścia (WE/WY). Użytkowy 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. 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 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 funkcje systemowe tworzą interfejs między programem użytkowym a systemem operacyjnym). Wiesław Płaczek Systemy Operacyjne: Wykład 9 2

Sprzęt wejścia-wyjścia wyjścia 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, myszy. 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ł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. Do szybkiego przesyłania dużych ilości danych stosuje się metodę DMA. Wiesław Płaczek Systemy Operacyjne: Wykład 9 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 9 4

Port WE/WY Port WE/WY Port wejścia wyjścia składa się zwykle 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; bity te mogą być czytane przez procesor główny. Sterowanie (control) może być 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 przy wysyłaniu danych. 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 9 5

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) w rejestrze poleceń (command register). 1. Procesor powtarza czytanie bitu zajęte dopóki nie przyjmie on wartości 0, tzn. wykonuje aktywne czekanie lub inaczej odpytywanie. 2. Procesor ustawia bit pisania (write bit) w rejestrze poleceń i wpisuje bajt do rejestru danych wyjściowych. 3. Procesor ustawia bit gotowości polecenia. 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 w rejestru danych wejściowych i wykonuje na urządzeniu operację WE/WY. 6. 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ęte, sygnalizując, że zakończył działanie. Schemat odpytywania można stosować gdy sterownik i urządzenie są szybkie, natomiast dla wolnych urządzeń marnuje się dużo czasu procesora. Wiesław Płaczek Systemy Operacyjne: Wykład 9 6

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 (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 9 7

Wiesław Płaczek Systemy Operacyjne: Wykład 9 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 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19-31 32-255 Błąd dzielenia Wyjątek diagnostyczny Przerwanie puste Punkt kontrolny Nadmiar INTO wykryty Wyjątek granicy przedziału Niedozwolony kod operacji Urządzenie niedostępne Błąd podwojenia Przepełnienie segmentu współprocesora (zarezerwowane) Niedozwolony segment stanu zadania Brak segmentu Błąd stosu Ochrona ogólna Błąd (brak) strony (zarezerwowane przez firmę Intel nie używać!) Błąd zmiennopozycyjny Kontrola przylegania Kontrola maszyny (zarezerwowane przez firmę Intel nie używać!) Przerwania maskowalne Wiesław Płaczek Systemy Operacyjne: Wykład 9 9 Opis

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óźnianie 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. Wiesław Płaczek Systemy Operacyjne: Wykład 9 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. 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 wskaźnik do źródła przesyłania, wskaźnik do miejsca docelowego przesyłania oraz liczbę bajtów do przesłania. Procesor zapisuje adres bloku sterującego w sterowniku DMA i przechodzi do kontynuowania 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 (DMArequest) 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ą (bus-mastering) zwykle posiadają własny sprzęt DMA o dużej szybkości. Wiesław Płaczek Systemy Operacyjne: Wykład 9 11

Wiesław Płaczek Systemy Operacyjne: Wykład 9 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. Sterownik dysku rozpoczyna przesyłanie DMA. 4. Sterownik dysku wysyła bajt za bajtem do sterownika DMA. Szyna PCI Dysk Dysk

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 (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 przezroczysty dowolnego polecenia od aplikacji do modułu sterującego urządzenia (np. funkcja systemowa ioctl() w systemie UNIX). Wiesław Płaczek Systemy Operacyjne: Wykład 9 13

Struktura oprogramowania 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 myszki... 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 myszki 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 9 14

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 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 9 15

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 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 XP: interfejsy do kart sieciowych oraz do protokołów sieciowych. Wiesław Płaczek Systemy Operacyjne: Wykład 9 16

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). Wiesław Płaczek Systemy Operacyjne: Wykład 9 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ń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. 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 (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, przekazania sygnału, przerwania programowego lub przywołania. Wiesław Płaczek Systemy Operacyjne: Wykład 9 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, 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 9 19

Szybkości przesyłania w urządzeniach komputera Sun Enterprise 6000 Szyna gigabajtowa Szyna SBUS Szyna SCSI Szybka sieć Ethernet Dysk twardy Sieć Ethernet Drukarka laserowa Modem Mysz Klawiatura 0,001 0,01 0,1 1 Wiesław Płaczek Systemy Operacyjne: Wykład 9 20 10 100 1000 Liczba bitów na milisekundę 10000 100000 1000000 10000000

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. 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 pozwalające procesom między sobą koordynować wyłączność dostępu (np. funkcja open() w Windows XP). Unikanie zakleszczeń należy do obowiązków aplikacji. Wiesław Płaczek Systemy Operacyjne: Wykład 9 21

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. 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). Wiesław Płaczek Systemy Operacyjne: Wykład 9 22

Wiesław Płaczek Systemy Operacyjne: Wykład 9 23 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

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? 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. Wiesław Płaczek Systemy Operacyjne: Wykład 9 24

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 Podsystem WE/WY w jądrze Tak Proces użytkownika 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 Sprawdź 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 9 25

Strumienie (STREAMS) Strumień (stream) systemu UNIX w wersji V jest jednokierunkowym połączeniem między modułem sterującym 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ą funkcji ioctl()). Np. proces może otworzyć port szeregowy za pomocą strumienia i wstawić do niego moduł umożliwiający redagowanie danych wejściowych. 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). Wiesław Płaczek Systemy Operacyjne: Wykład 9 26

Wiesław Płaczek Systemy Operacyjne: Wykład 9 27 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 zadanie 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ć z przeplataniem 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). Wiesław Płaczek Systemy Operacyjne: Wykład 9 28

Wiesław Płaczek Systemy Operacyjne: Wykład 9 29 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 9 30 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).

Lokalizacja realizacji funkcji urządzeń Wiesław Płaczek Systemy Operacyjne: Wykład 9 31 Nowy algorytm Wzrost nakładów czasu (generacje) Wzrost wydajności Wzrost kosztów opracowania Wzrost stopnia abstrakcji 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