Systemy operacyjne Paweł Pełczyński ppelczynski@swspiz.pl 1
Program przedmiotu Wprowadzenie Struktura systemów operacyjnych Procesy i Wątki Komunikacja międzyprocesowa Szeregowanie procesów Zarządzanie pamięcią Systemy plików Bezpieczeństwo oraz ochrona 2
Literatura A. Silberschatz, P. B. Galvin, Podstawy systemów operacyjnych, wydanie III, WNT, Warszawa, 2000. A. Robbins, N. H. F. Beebe, Programowanie skryptów powłoki, Helion 2005, D. P. Bovet, M. Cesati, Linux kernel, Wydawnictwo RM, Warszawa, 2001. 3
Definicja systemu operacyjnego System operacyjny (ang. skrót OS Operating System) - oprogramowanie zarządzające sprzętem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań użytkownika. 4
Zadania systemu operacyjnego planowanie oraz przydział czasu procesora poszczególnym zadaniom kontrola i przydział pamięci operacyjnej dla uruchomionych zadań dostarczanie mechanizmów do synchronizacji zadań i komunikacji pomiędzy zadaniami obsługa sprzętu oraz zapewnienie równolegle wykonywanym zadaniom jednolitego, wolnego od interferencji dostępu do sprzęt zarządzanie systemem plików ustalanie połączeń sieciowych 5
Cechy charakterystyczne System operacyjny stanowi swego rodzaju interfejs pomiędzy komputerem a człowiekiem Wiele systemów operacyjnych posiada środowiska graficzne ułatwiające komunikacje maszyny z użytkownikiem 6
Komponenty systemu komputerowego System operacyjny jest warstwą w schemacie logicznym systemu komputerowego. Pozwala aplikacjom użytkownika na dostęp do sprzętu w ujednolicony sposób, tworząc abstrakcję sprzętu: plik, pamięć wirtualna, proces. Źródło: http://pl.wikipedia.org 7
Komponenty wieloużytkownikowego systemu komputerowego Źródło: http://codex.cs.yale.edu/avi/os-book/os7/slide-dir/index.html 8
Klasyfikacja systemów operacyjnych Przydział czasu procesora poszczególnym zadaniom: - s. o. czasu rzeczywistego (RTOS) - s. o. czasowo niedeterministyczne Realizacja przełączania zadań - s. o. z wywłaszczaniem zadań - s. o. bez wywłaszczania zadań Rodzaj sprzętu, na którym są instalowane - s. o. otwarte - s. o. wbudowane 9
Zadanie, proces, wątek Zadanie użtkownika program do uruchomienia Proces egzemplarz wykonywanego programu, posiada unikalny numer, który go jednoznacznie identyfikuje, PID (ang. process IDentifier), dzięki czemu możliwe jest rozróżnienie wielu różnych procesów wykonujących jednocześnie ten sam kod programu, system operacyjny przydziela procesowi zasoby, np. pamięć i czas procesora Wątek jest rodzajem procesu, wykonywanego współbieżnie w obrębie jednego zadania. Różnica między zwykłym procesem a wątkiem polega na współdzieleniu przez wszystkie wątki uruchomione w jednym zadaniu przestrzeni adresowej oraz wszystkich struktur systemowych 10
Systemy jedno- i wieloprocesowe oraz jedno- i wieloużytkownikowe System operacyjny jednoprocesowy brak zaimplementowanych mechanizmów wieloprocesowości, brak możliwości uruchamiania różnych aplikacji w tym samym czasie System operacyjny wieloprocesowy zaimplementowane mechanizmy wieloprocesowości, możliwe korzystanie z kilku aplikacji jednocześnie System operacyjny jednoużytkownikowy przeznaczony dla komputerów osobistych, pozwala na jednoczesną pracę pojedynczego użytkownika System operacyjny wieloużytkownikowy zazwyczaj system instalowany w stacji roboczej, z możliwością podłączenia wielu terminali 11
Budowa systemu operacyjnego System operacyjny składa się z trzech głównych elementów: jądro powłoka system plików 12
Jądro systemu operacyjnego (ang. kernel) Jądro systemu operacyjnego można scharakteryzować następująco: Jest to część systemu przebywająca na stałe w pamięci Wykonuje się w trybie uprzywilejowanym Zarządza zasobami komputera Udostępnia interfejs programom użytkownika w postaci wywołań systemowych. 13
Jądro systemu operacyjnego Jądro składa się z następujących elementów funkcjonalnych: planisty czasu procesora, ustalającego które zadanie i jak długo będzie wykonywane przełącznika zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami Dodatkowo: modułu zapewniającego synchronizację i komunikację pomiędzy zadaniami modułu obsługi przerwań i zarządzania urządzeniami modułu obsługi pamięci, zapewniającego przydział i ochronę pamięci innych funkcji 14
Zarządzanie zasobami w wieloprocesowym systemie operacyjnym Aby zapobiec tzw. interferencji procesów organizuje się dostęp do sprzętu, plików, pamięci itp. poprzez ustanowienie zasobów systemowych. Zadania użytkownika używają systemu operacyjnego jako strażnika zarządcy zasobów. Zadania niskopoziomowe systemu operacyjnego podczas zarządzania zasobami komputera: tworzenie deskryptora zasobu, usuwanie deskryptora zasobu, realizacja żądania przydziału, zwolnienie i odzyskiwanie zasobu. 15
Zarządzanie zasobami w wieloprocesowym systemie operacyjnym Zadania logiczne zarządzania zasobami: przydział zasobów, synchronizacja dostępu do zasobów, ochrona i autoryzacja dostępu do zasobów, odzyskiwanie zasobów, gromadzenie danych o wykorzystaniu zasobów. 16
Rozwój systemów operacyjnych Początkowo koszt komputera był wysoki w porównaniu z kosztem pracy ludzi z niego korzystających. Główny cel stojący przed systemem, to maksymalizacja wykorzystania sprzętu (procesora, pamięci masowych, drukarek). Stosowano rozwiązania typu: przetwarzanie wsadowe, wieloprogramowość, spooling. 17
Rozwój systemów operacyjnych Obecnie koszt komputera jest niski w porównaniu z kosztem pracy ludzi z niego korzystających. Cel stojący przed systemem to stworzenie środowiska zapewniającego jak największą wygodę i produktywność użytkowników. Realizowana jest praca interaktywna, praca interakcyjna z wieloma programami, graficzne interfejsy użytkownika + wielowątkowość. 18
Historia rozwoju systemów operacyjnych Komputery bez systemu operacyjnego Systemy wsadowe Systemy wykorzystujące buforowanie i spooling Wieloprogramowe systemy wsadowe Systemy z podziałem czasu Systemy komputerów osobistych Systemy równoległe i rozproszone Systemy czasu rzeczywistego 19
Historia rozwoju systemów operacyjnych brak systemu Programista rezerwuje czas komputera Wczytuje program z czytnika kart perforowanych lub taśmy magnetycznej Kompiluje program i uruchamia program Drukarka drukuje wyniki Wady: Duża część czasu spędzana na przygotowaniu programu do uruchomienia Nieefektywne wykorzystanie czasu pracy systemu Zalety: - w przypisanym czasie programista ma pełną kontrolę nad komputerem 20
Historia rozwoju systemów operacyjnych systemy wsadowe Programista zostawia zadanie operatorowi w postaci kart perforowanych lub innego nośnika Grupowanie razem czynności o podobnym charakterze (np. kompilacja) Zadania są łączone we wsad (ang. Batch) i wykonywane Programista po pewnym czasie otrzymuje wyniki Program monitora (pierwowzór systemu operacyjnego) Wczytuje program użytkownika do pamięci Przekazuje mu sterowanie Po zakończeniu pracy program użytkownika zwraca sterowanie do monitora Zaleta: - lepsze wykorzystanie sprzętu Wada: - programista nie ma kontroli nad wykonywaniem zadania 21
Historia rozwoju systemów operacyjnych systemy wykorzystujące buforowanie lub spooling Buforowanie jednoczesne wykonywanie obliczeń i operacji wejścia/wyjścia dla jednego zadania Spooling (ang: Simulateneous Peripheral Operation On-Line) - jednoczesne wykonywanie operacji wejścia/wyjścia dla jednego zadania i obliczeń dla innych zadań - wykorzystuje szybką pamięć dyskową - program i dane z czytnika kart są przesyłane na dysk - program do wykonania wczytany z dysku, wyniki zapisywane na dysk - wyniki z dysku przesyłane na urządzenie wyjściowe, np. drukarkę Cechy: - zrównoleglenie operacji wczytywania programu, obliczeń i wyprowadzania danych - algorytmy szeregowania (ang. scheduling) zarządzają pulą zadań na dysku 22
Historia rozwoju systemów operacyjnych wieloprogramowe systemy wsadowe Wiele zadań równocześnie przebywa w pamięci i współdzieli procesor (wykonuje się współbieżnie) Cechy: Dzielenie czasu procesora (wznawianie zadań, synchronizacja i komunikacja) Dzielenie pamięci operacyjnej Dzielenie urządzeń (program kanałowy, system przerwań) 23
Historia rozwoju systemów operacyjnych systemy z podziałem czasu Procesor wykonuje na przemian wiele zadań, przy czym przełączanie następuje tak często, że użytkownicy mogą współdziałać z programem podczas jego wykonania Cechy: Interakcja użytkownika z systemem komputerowym System plików dostępnych bezpośrednio (dostęp do programów i danych) Wymiana zadania między pamięcią i dyskiem (ang. swapping) 24
Historia rozwoju systemów operacyjnych systemy komputerów osobistych Pierwsze systemy operacyjne komputerów osobistych np. MS-DOS Cechy: brak ochrony plików brak ochrony pamięci brak wielozadaniowości 25
Historia rozwoju systemów operacyjnych systemy równoległe Systemy wieloprocesorowe z więcej, niż jednym procesorem Cechy: Systemy ściśle powiązane - procesory dzielą pamięć i zegar zwiększona przepustowość i niezawodność Symetryczna lub asymetryczna wieloprocesowość Symetryczna wieloprocesowość: każdy procesor wykonuje identyczną kopię systemu operacyjnego, wiele procesów wykonuje się jednocześnie bez spadku wydajności Asymetryczna wieloprocesowość: każdy procesor wykonuje przydzielone mu zadanie, procesor główny szereguje i przydziela pracę procesorom podrzędnym 26
Historia rozwoju systemów operacyjnych systemy rozproszone Rozdzielenie obliczeń pomiędzy wiele komputerów Cechy: systemy luźno powiązane - każdy procesor ma lokalną pamięć procesory komunikują się ze sobą poprzez sieć Korzyści: podział zasobów, obciążenia, niezawodność 27
Historia rozwoju systemów operacyjnych systemy czasu rzeczywistego Służą jako sterowniki urządzeń o ściś le okreś lonym znaczeniu Cechy: Ostre wymagania czasowe Sprzężenie zwrotne Przykłady: sterowanie procesem przemysłowym, monitorowanie stanu zdrowia pacjenta 28