Systemy wejścia-wyjścia wyjścia
RóŜnorodność urządzeń Funkcje Pamięci Przesyłania danych Interfejsu z człowiekiem Sterowanie Transmisja Znakowa Blokowa Dostęp Sekwencyjny Swobodny Tryb pracy Synchroniczny (z blokowaniem) Asynchroniczny UŜytkowanie Współdzielone Wyłączne (dedykowane) Rodzaj dostępu Odczyt Zapis Odczyt/zapis Szybkość Operacje wykonywane Błędy
Podsystem we/wy I/O subsystem RóŜnorodne metody Oddzielenie reszty jądra od zarządzania we/wy 2 sprzeczne tendencje w technologii urządzeń we/wy Standaryzacja interfejsów programowych i sprzętowych RóŜnorodność urządzeń Metody sprzętowe i programowe
Elementy softwarowe moduły sterujące w jądrze (device drivers) Elementy sprzętowe porty szyny sterowniki urządzeń (device controllers) Komunikacja (urządzenie system komputerowy) przesyłanie sygnałów: kablowo bezprzewodowo
Port punkt łączący urządzenie z maszyną 4 rejestry: stan (czytany przez gł. procesor) sterowanie (zapisywany przez procesor) dane we (czytany przez gł. procesor) dane wy (zapisywany przez procesor) Szyna wspólna wiązka przewodów (+ protokół) Sterownik (controller)- zespół układów elektronicznych do kierowania pracą portu, szyny lub urządzenia w komputerze (port szergowy); na oddzielnej płycie z ukł. elektr. (SCSI) lub w urządzeniu (dyski) wyposaŝony w rejestry do pamiętania danych i sygnałów sterujących Sterowanie urządzeniami rozkazy we/wy (pobieranie danych do/z rejestrów urządzenia) we/wy odwzorowane w pamięci (rejestry odwzorowane w przestrzeni adresowej procesora)
Komunikacja procesor gł. - sterownik Odpytywanie Przerwania Odpytywanie rej. stanu=>bit zajętości=1 (sterownik pracuje) rej. poleceń=>bit gotowości polecenia (ustawenie/zerowanie) uzgadnianie (handshaking) 1. aktywne czekanie (busy waiting) sprawdzanie bitu zajętości (3 cykle: czytaj, koniunkcja, skok) 2. ustawienie bitu pisania w rejestrze poleceń + wypełnienie rejestru danych wy. 3. ustawienie bitu gotowości polecenia 4. ustawienie bitu zajętości 5. odczyt rej. poleceń; odczyt danych (1 bajt), operacja we/wy 6. zerowanie bitu gotowości, bitu błędu, bitu zajętości
przerwania gdy długi czas czekania (w 1 rzadkie przypadki gotowości) obsługa asynchronicznych zdarzeń; przechodzenie do trybu nadzorcy linia zgłaszania przerwań (interrupt request line) odpytywana przy kaŝdym rozkazie -> procedura obsługi przerwań obsługa przerwań - JC+sterownik przerwań: opóźnienie obsługi przerwania kierowanie przerwania do właściwej procedury priorytetowy system przerwań 2 linie zgłaszania przerwań: maskowane niemaskowane wektor przerwań adresy procedur obsługi przerwań technika łańcuchowania przerwań system poziomów priorytetów opóźnienie obsługi przerwań niskopriorytetowych bez maskowania umoŝliwia wywłaszczanie
Cykl we/wy obsługiwany przerwaniem
Współpraca SO z mechanizmem obsługi przerwań start SO instalacja odpowiednich procedur obsługi przerwań dla dostępnych urządzeń op. we/wy sterowniki generują przerwania: zakończenie operacji wy dostępność danych we błąd obsługa sytuacji wyjątkowych stronicowanie odwołania do systemu (pułapka; realizuje procedury jądra w trybie nadzorcy; niski priorytet) Solaris procedury obsługi przerwań jako wątki jądra
DMA (direct( memory access) bezpośredni dostęp do pamięci PIO (Programmed I/O) marnotrawstwo głównego procesora -> procesor wyspecjalizowany - sterownik DMA tryb DMA Procesor zapisuje w PAO blok sterujący DMA wskaźnik do źródła wskaźnik m-ca docelowego liczba bajtów do przesłania Adres bloku sterującego zapisuje w sterowniku DMA DMA przejmuje nadzór nad szyną pamięci (przesyła dane bez JC) Uzgadnianie przesyłania między sterownikiem urządzenia a sterownikiem DMA: 2 przewody zamówienie; potwierdzenie Sterownik DMA przejmuje szynę pamięci (kradzieŝ cykli) Adresy pamięci fizycznej lub wirtualnej (DMA, DVMA)
UŜytkowy interfejs we/wy UmoŜliwia jednolite traktowanie urządzeń we/wy UniezaleŜnienie podsystemu we/wy od sprzętu Wydzielenie kilku rodzajów urządzeń (ustandaryzowany zbiór funkcji interfejs) RóŜnice zawarte w modułach sterujących jądra Warstwowa struktura oprogramowania Nowe urządzenia zgodne z istniejącym interfejsem sterowników lub zaopatrywane w nowe programowe moduły sterujące (dla róŝnych SO)
Warstwowa struktura oprogramowania we/wy
Odwołania do systemu: Podstawowe konwencje dostępu we/wy We/wy blokowe polecenia: czytaj, pisz, szukaj We/wy znakowe get, put, bacspace Pliki odwzorowywane w PAO Dostęp do pamięci dyskowej poprzez tablicę w PAO; warstwa ponad we/wy blokowe Gniazda sieciowe wybierz gniazdo Dostęp do zegara, czasomierza Obsługa monitorów, urządzeń multimedialnych
we/wy z blokowaniem i bez Blokowane wywołanie systemowe wstrzymanie procesu wywołującego (kolejka procesów czekających) Zachodzenie na siebie operacji we/wy i obliczeń aplikacja wielowątkowa Nieblokowane wywołanie op.we/wy nie wstrzymuje aplikacji; kończy się szybko zwracając liczbę przesłanych bajtów (niekoniecznie wszystko) Asynchroniczne odwołanie do systemu powrót do aplikacji natychmiast; po zakończeniu operacji we/wy przerwanie lub przekazanie sygnału (zamówienie zostanie wykonane w całości)
Usługi podsystemu we/wy Planowanie we/wy Kolejki zamówień do kaŝdego urządzenia Zmiana porządku w kolejkach Buforowanie RóŜnice w szybkości urządzeń - podwójne buforowanie RóŜne rozmiary przesyłanych jednostek danych Zapewnienie semantyki kopii (operowanie na buforze w jądrze) Cache przechowywanie podręczne Kopia danych w szybszej pamięci (PAO, pam. podręczna procesora) SO korzystanie z buforów w PAO jak z pamięci podręcznej - dla zapewnienia semantyki kopii Spooling (simultaneus peripherial operation on-line) Osobny bufor dla kaŝdej aplikacji (niedopuszczalny przeplot danych w strumieniu - drukarka) Obsługa błędów Przejściowe awarie powtórzenie operacji Systemowe wywołanie zwraca kod błędu (errno)
Planowanie we/wy Numer bloku logicznego numer sektora Numer cylindra, ścieŝki, sektora Sektory uszkodzone zastąpione rezerwowymi Grupa cylindrów taka sama liczba sektorów (100 <) Planowanie dostępu do dysku Czas szukania (seek time ) Opóźnienie obrotowe ( rotational latency ) Szerokość pasma (bandwidth) liczba przesłanych bajtów/czas
FCFS 200 cylindrów; Przesunięcie głowicy 640 cylindrów
Przesunięcie głowicy 236cylindrów SSTF ( shortest seek time first )
SCAN Algorytm windy Przesunięcie głowicy 236cylindrów
Przesunięcie głowicy 183 + 199 cylindrów C-SCAN
LOOK C-LOOK LOOK 236-28= 208 cylindrów C-LOOK 183-2*16-2*14 + 199 cylindrów
Zamówienia zaleŝą od metod przydziału miejsca na dysku Lokalizacja katalogów, bloków indeksowych Czas szukania a opóźnienie obrotowe Opóźnienie obrotowe dyski nie ujawniają fizycznego połoŝenia bloków logicznych Algorytm planowania dostępu do dysku w sterowniku wbudowanym w sprzęt Ale w so inne ograniczenia na kolejność realizacji operacji we/wy (stronicowanie, pisanie, czytanie)
Struktury danych w jądrze - Unix
Podsystem we/wy Zarządzanie przestrzenią nazw plików i urządzeń Przebieg dostępu do plików i urządzeń Sprawdzanie poprawności operacji Przydział miejsca w systemie plików Przydział urządzeń Buforowanie, spooling, przechowywanie podręczne Planowanie operacji we/wy Obsługa błędów, czynności naprawcze po awarii Konfigurowanie modułu sterującego Programowe moduły sterujące dostarczają jednolity interfejs
Czytanie z blokowaniem Proces zamawia operację czytania (deskryptor) Funkcja systemowa jądra sprawdza parametry; ewentualnie przekazuje dane do procesu Zamówienie operacji we/wy do modułu sterującego urządzenia; proces do kolejki czekających Moduł sterujący rezerwuje miejsce; wypełnia rejestry sterujące urządzenia Sterownik po zakończeniu przesyłania generuje przerwanie lub moduł sterujący odpytuje stan urządzenia Moduł sterujący urządzenia określa stan zamówienia, Jądro przesyła dane do p przestrzeni adresowej procesu; proces do kolejki procesów gotowych
Realizacja zamówienia czytania z blokowaniem we/wy
Wydajność operacji we/wy Kosztowne przełączenia kontekstu Przerwania a programowe we/wy Ruch w sieci Solaris telnet w oparciu o wątki Terminalowe operacje we/wy - oddzielne procesory czołowe koncentrator terminali Kanały we/wy przepływ danych; procesor gł. obliczenia
Miejsce implementacji funkcji we/wy