ROZDZIAŁ 12: Systemy wejścia-wyjścia Sprzęt wejścia-wyjścia Użytkowy interfejs wejścia-wyjścia Podsystem wejścia-wyjścia w jądrze Przekształcenie żądań operacji wejścia-wyjścia na operacje systemowe Wydajność Podstawy Systemów Operacyjnych 12.1 Silberschatz and Galvin ©1998
Sprzęt wejścia-wyjścia Niewiarygodna różnorodność urządzeń we/wy Pojęcia wspólne port szyna (łańcuch lub dzielony bezpośredni dostęp) sterownik (adapter główny) Instrukcje we/wy kontrolują urządzenia Urządzenia mają adresy używane przez bezpośrednie instrukcje we/wy mapowanie pamięci we/wy Podstawy Systemów Operacyjnych 12.2 Silberschatz and Galvin ©1998
Określenie stanu urządzenia Odpytywanie Określenie stanu urządzenia gotowy zajęty błąd Zastosowanie cyklu „Zajęty-czekaj” dla oczekiwania na zakończenie pracy przez urządzenia we/wy Podstawy Systemów Operacyjnych 12.3 Silberschatz and Galvin ©1998
Przerwanie skierowane do procesora jest wyzwalane z urządzenia we/wy Przerwania Przerwanie skierowane do procesora jest wyzwalane z urządzenia we/wy Procedura obsługi przerwania przejmująca przerwanie Zastosowanie maskowania przerwań do ignorowania lub opóźniania niektórych przerwań Wektor przerwań rozprowadzający przerwanie do właściwej procedury obsługowej bazujący na priorytetach przerwań niektóre przerwania są niemaskowalne Mechanizm przerwań jest także używany dla wyjątków Podstawy Systemów Operacyjnych 12.4 Silberschatz and Galvin ©1998
Przerwanie - cykl wejścia-wyjścia Procesor Sterownik wejścia-wyjścia 1 Moduł sterujący urządzenia rozpoczyna operację wejścia-wyjścia Między rozkazami procesor sprawdza występowanie przerwań Procesor przyjmuje przerwanie i przekazuje sterowanie procedurze obsługi przerwania Procedura obsługi przerwania przetwarza dane i wykonuje powrót po przerwaniu Procesor podejmuje wykonywanie przerwanego zadania Rozpoczęcie operacji wejścia-wyjścia Gotowość wejścia, wyjście zakończone lub błąd – wytworzenie sygnału przerwania 2 3 4 7 5 6 Podstawy Systemów Operacyjnych 12.5 Silberschatz and Galvin ©1998
Bezpośredni dostęp do pamięci Używany do uniknięcia programowej obsługi operacji we/wy przesyłających duże porcje danych Wymaga kontrolera DMA Omija procesor aby przenieść dane bezpośrednio pomiędzy we/wy a pamięcią Podstawy Systemów Operacyjnych 12.6 Silberschatz and Galvin ©1998
6 etapów przesyłania w trybie DMA Szyna PCI Szyna pamięci procesora Pamięć operacyjna Bufor X Procesor Pamięć podręczna DMA, szyna, sterownik przerwań Sterownik dysku IDE Dysk 3. Sterownik dysku rozpoczyna przesyłanie DMA. 4. Sterownik dysku wysyła bajt za bajtem do sterownika 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. 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. Podstawy Systemów Operacyjnych 12.7 Silberschatz and Galvin ©1998
Użytkowy interfejs wejścia-wyjścia Systemowe wywołania we/wy uogólniają zachowanie [sposób działania] różnych fizycznych urządzeń [enkapsułują] Warstwa sterowników urządzeń ukrywa przed jądrem różnice pomiędzy różnymi kontrolerami we/wy Urządzenia różnią się w wielu aspektach znakowe lub blokowe sekwencyjne lub o swobodnym dostępie dzielone lub dedykowane szybkość operacji zapisująco-odczytujące, tylko do odczytu, tylko do zapisu Podstawy Systemów Operacyjnych 12.8 Silberschatz and Galvin ©1998
Urządzenia blokowe i znakowe Urządzenia blokowe zawierają sterowniki dysków komendy: czytaj, pisz, szukaj surowe we/wy lub dostęp poprzez system plików możliwy dostęp do pliku odwzorowania pamięci Urządzenia znakowe to m.in. klawiatury, myszki, porty szeregowe komendy: pobranie, przekazanie biblioteki wyższych warstw umożliwiają edycję całej linii Podstawy Systemów Operacyjnych 12.9 Silberschatz and Galvin ©1998
Unix i Windows/NT posiadają interfejs gniazd Urządzenia Sieciowe Różnią się zdecydowanie od urządzeń blokowych i znakowych poprzez posiadanie własnego interfejsu Unix i Windows/NT posiadają interfejs gniazd rozdzielenie protokołów sieciowych od operacji sieciowych umożliwiają funkcjonalność select Bardzo różne podejścia [filozofie] (potoki, kolejki FIFO, strumienie, kolejki, skrzynki pocztowe) Podstawy Systemów Operacyjnych 12.10 Silberschatz and Galvin ©1998
Zapewniają bieżący czas, upływ czasu, czasomierz Zegary i czasomierze Zapewniają bieżący czas, upływ czasu, czasomierz Czasomierz programowalny nastawiony na okresowe generowanie przerwań ioctl (w UNIX) obejmuje różne aspekty operacji we/wy takie jak czas i zegar Podstawy Systemów Operacyjnych 12.11 Silberschatz and Galvin ©1998
Wejście-wyjście z blokowaniem i bez blokowania Blokujące: proces zostaje zawieszony [wstrzymany] do czasu zakończenia operacji we/wy łatwe w użyciu i zrozumieniu nieodpowiednie dla niektórych zastosowań Nieblokujące: wywołanie operacji we/wy zwraca największą możliwą porcję informacji interfejs użytkownika, kopiowanie danych (buforowane operacje we/wy) realizowane poprzez użycie wielowątkowości wywołanie funkcji we/wy jest natychmiastowe, zwracając w wyniku liczbę odczytanych/zapisanych bajtów Podstawy Systemów Operacyjnych 12.12 Silberschatz and Galvin ©1998
Wejście-wyjście z blokowaniem i bez blokowania Asynchroniczne: proces jest wykonywany współbieżnie z operacją we/wy trudny w użyciu podsystem we/wy sygnalizuje [wysyła sygnał] procesowi zakończenie operacji we/wy Podstawy Systemów Operacyjnych 12.12a Silberschatz and Galvin ©1998
Podsystem wejścia-wyjścia w jądrze Szeregowanie niektóre żądania wykonania operacji we/wy są porządkowane poprzez zastosowanie kolejek dedykowanych dla każdego urządzenia niektóre systemy operacyjne próbują ... Buforowanie – zapamiętywanie danych w pamięci podczas przesyłania pomiędzy urządzeniami rozwiązuje problemy z niedopasowaniem prędkości poszczególnych urządzeń rozwiązuje problemy z niedopasowaniem rozmiaru pakietów danych między poszczególnymi urządzeniami utrzymuje [wspiera] “semantykę kopiowania” Podstawy Systemów Operacyjnych 12.13 Silberschatz and Galvin ©1998
Podsystem wejścia-wyjścia w jądrze Caching - szybka pamięć utrzymująca kopię danych zawsze tylko kopia kluczowa dla wydajności Spooling – utrzymywanie danych wyjściowych dla urządzenia stosowane, gdy urządzenie może obsłużyć tylko jedno zadanie naraz tyle co drukowanie Rezerwacja urządzeń – umożliwia wyłączny dostęp do urządzenia wywołania systemowe dla alokacji i dealokacji [rezerwacji i zwalniania] uwaga na możliwość zakleszczeń Podstawy Systemów Operacyjnych 12.14 Silberschatz and Galvin ©1998
Logi systemowe utrzymują raporty o błędach Obsługa błędów Systemy operacyjne mogą odzyskiwać dane z dysku, urządzenia niedostępnego i chwilowych błędów zapisu Większość operacji we/wy zwraca w wyniku numer lub kod błędu w wypadku niepowodzenia Logi systemowe utrzymują raporty o błędach Podstawy Systemów Operacyjnych 12.15 Silberschatz and Galvin ©1998
Struktura danych jądra Jądro utrzymuje stan informacji o składnikach we/wy, w tym tabel otwartych plików, połączeń sieciowych, stanu urządzeń znakowych Wiele, wiele złożonych struktur danych dla śledzenia buforów, alokacji pamięci, „brudnych” bloków Zdarza się użycie metod obiektowych i przesyłania komunikatów do zaimplementowania we/wy Podstawy Systemów Operacyjnych 12.16 Silberschatz and Galvin ©1998
Przekształcenie zamówień wejścia-wyjścia na operacje sprzętowe Rozważ problem odczytu pliku z dysku dla procesu określ urządzenie, na którym znajduje się plik przetłumacz nazwę pliku na reprezentację sprzętową fizycznie odczytaj dane z dysku do bufora udostępnij dane żądającemu procesowi zwróć sterowanie do procesu Podstawy Systemów Operacyjnych 12.17 Silberschatz and Galvin ©1998
Etapy wykonania zamówienia wejścia-wyjścia Zamówienie wejścia-wyjścia Wyślij zamówienie do modułu sterującego urządzenia, w razie konieczności zablokuj proces Przetwórz zamówienie, wydaj polecenie sterownikowi, zablokuj sterownik do chwili przerwania Sprawdź urządzenie, przerwij po zakończeniu operacji wejścia-wyjścia Polecenia sterownika urządzenia Odwołanie do systemu Czy można już zrealizować zamówienie? Operacja wejścia-wyjścia zakończona, dane wejściowe są dostępne lub dane wyjściowe zostały wyprowadzone Przesyłanie (w razie potrzeby) danych do procesu oraz przekazywanie informacji o poprawnym lub błędnym zakończeniu Określ, która operacja wejścia-wyjścia została zakończona, wskaż zmianę stany podsystemowi wejścia-wyjścia 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 Operacja wejścia-wyjścia się skończyła, wygeneruj przerwanie Powrót po wykonaniu odwołania do systemu Przerwanie Proces użytkownika Podsystem wejścia-wyjścia w jądrze Moduł sterujący urządzenia Procedura obsługi przerwania Sterownik urządzenia klawiatury Nie Tak Czas Podstawy Systemów Operacyjnych 12.18 Silberschatz and Galvin ©1998
Operacje we/wy jako podstawowy czynnik wydajności systemu wymaga zaangażowania procesora do wykonania kodu sterownika i operacji w trybie jądra przełączanie kontekstu dla obsługi przerwania kopiowanie danych ruch sieciowy szczególnie wpływa na wydajność Podstawy Systemów Operacyjnych 12.19 Silberschatz and Galvin ©1998
Komunikacja międzykomputerowa Wygenerowanie przerwania Obsłużenie przerwania Moduł sterujący urządzenia Jądro Proces użytkownika Adapter sieciowy Zakończenie odwołania do systemu Demon sieci Poddemon sieci Przełączenie kontekstu Napisanie znaku Odebranie pakietu sieciowego Przełą-czenie kon-tekstu Przełą-czenie stanu Sprzęt Sieć System nadawczy System odbiorczy Podstawy Systemów Operacyjnych 12.20 Silberschatz and Galvin ©1998
Zwiększanie wydajności Ogranicz liczbę przełączeń kontekstu Ogranicz liczbę kopiowań danych Ogranicz przerwania poprzez stosowanie dużych transferów danych, inteligentnych kontrolerów, aktywnych odpytywań Użyj DMA Wyważ i zbalansuj [dostrój] użycie CPU, pamięci, magistrali i wydajności we/wy dla największej przepustowości Podstawy Systemów Operacyjnych 12.21 Silberschatz and Galvin ©1998