Struktury systemów operacyjnych Jan Tuziemski Część slajdów to zmodyfiowane slajdy ze strony os-booi.com copyright Silberschatz, Galvin and Gagne, 2013
Cele wykładu 1. Opis usług dostarczanych przez OS 2. Sposób dostarczania usług przez OS 3. Opis różnych możliwych struktur OS
Usługi systemów operacyjnych 1. OS tworzy środowisko do wykonywania programów 2. Część usług OS ma ułatwić życie użytkownikom: Interfejs użytkownika (ang. UI): graficzny (GUI), linia komend (CLI), batch Uruchamianie programów: ładowanie, nadzorowanie, komunikaty o błędach Operacje I/O (WEJ/WYJ): programy mogą żądać komunikacji z urządzeniami/plikami
Usługi systemów operacyjnych 2. Część usług OS ma ułatwić życie użytkownikom: Zarządzanie plikami: zapisywanie, usuwanie, wyszukiwanie, prawa dostępu Łączność: komunikacja w sieciach i między procesami Detekcja błędów: Możliwe źródła: pamięć, CPU, urządzenia I/O, programy użytkowników W zależności od rodzaju błędu OS podejmuje odpowiednie działania w celu zapewnienia ciągłego działania systemu
Usługi systemów operacyjnych 3. Część usług OS ma zapewnić wydajne działanie systemu przez zarządzanie zasobami Dystrybucja zasobów: wiele użytkowników/zadań musi mieć przydzielone zasoby Rodzaje zasobów: cykle CPU, pamięć główna, urządzenia I/O, przestrzeń dyskowa Księgowość : przechowywanie informacji o działaniach użytkowników i przydzielonych im zasobów Zapewnianie bezpieczeństwa: systemy sieciowe i adresowane do wielu użytkowników Ochrona dostępu do wszystkich zasobów Bezpieczeństwo: uwierzytelnianie użytkowników, ochrona przed nieuprawnionymi operacjami I/O
Usługi systemów operacyjnych
Wywołania systemowe Programowy interfejs pomiędzy programami a usługami systemowymi, zapewniany prze OS Zazwyczaj napisany w języku wysokiego poziomu (C/C+ +) Zazwyczaj wywoływane przez Interfejs programistyczny aplikacji (API) niż przez wywołanie bezpośrednie Przykłady: Win API, POSIX API dla systemów opartych o POSIX (parwie wszytkie typy UNIX, Linux, i Mac OS X), i Java API dla Java virtual machine (JVM)
Wywołania systemowe Przykładowe wywołania systemowe w przypadku kopiowania plików
Implementacja wywołań systemowych Interfejs wywołań systemowych wywołuje wołanie systemowe w OS i zwraca jego status (wraz z ewentualnymi wynikami) Nie trzeba znać szczegółów wywołania: Wystarczy wiedza o: zasadach wywołania, celu wywołania Większość szczegółów ukryta w API
Implementacja wywołań systemowych
Wywołania systemowe przekazywanie parametrów Zazwyczaj oprócz nazwy potrzeba przekazać parametr do wywołań systemowych (np. adres pliku) Trzy sposoby przekazywania parametrów: Przez rejestry (wada: ograniczona przestrzeń) Jako blok pamięci (adres pamięci przekazywany przez rejestr) głównie Linux Odłożenie parametrów na stos (aplikacja), zdjęcie przez system operacyjny
Wywołania systemowe przekazywanie parametrów
Typy wywołań systemowych Kontrola procesów Zarządzanie plikami np.: stwórz/usuń proces; przydziel/zwolnij pamięć; zakończ/przerwij; załaduj np.:stwórz/usuń; otwórz/zamknij; czytaj/pisz; ustaw atrybuty Zarządzanie urządzeniami np.: Zażądaj/zwolnij urządzenie; czytaj/zapisz
Typy wywołań systemowych Utrzymywanie informacji: Komunikacja: np.: ustaw/pobierz czas; ustaw/pobierz dane systemu np.: stwórz/usuń połączenie Ochrona: np.: nadaj/odmów uprawnień
Wywołania systemowe
Użycie w programach
Programy systemowe Programy systemowe tworzą wygodne środowisko dla użytkownika (zarządzanie plikami itp.) Widoczne elementy OS to zazwyczaj programy systemowe
Programy systemowe Czasami stanowią interfejsy do wywołań systemowych Zastosowania: Zarządzanie plikami Informacje o systemi Modyfikacja plików Narzędzia programistyczne
Programy systemowe Usługi (procesy w tle): sprawdzanie dysku, aktualizacje itp. również są programami systemowymi
Projektowanie OS Nie ma uniwersalnego algorytmu Niektóre podejścia okazują się skuteczne Należy zdać sobie sprawę z : Celów i specyfikacji Rodzaju platformy sprzętowej Wyważeniu celów użytkowników i celów systemu operacyjnego (łatwość projektowania, tworzenia i utrzymania, wydajność, elastyczność mała ilość błędów)
Projektowanie OS Rozdzielenie zasad: Co ma zostać zrobione? W jaki sposób to zrobić? Rozdzielenie tych dwóch punktów pozwala na elastyczność gdy zmienia się jeden z nich
Implementacja OS Duża różnorodność języków: Niskiego poziomu (początkowo) Specjalistyczne: AGOL PL/1 (później) Wysokiego poziomu C/C++ (obecnie)
Implementacja OS Duża różnorodność języków: Niskiego poziomu (początkowo) Specjalistyczne: AGOL PL/1 (później) Wysokiego poziomu C/C++ (obecnie)
Implementacja OS OS do ogólnych zastosowań jest bardzo złożonym programem Dlatego potrzebne jest wprowadzenie struktury
Struktura OS Struktura warstwowa Każda warstwa korzysta wyłącznie z warstw leżących poniżej
Struktura OS Application Program File System messages Interprocess Communication user mode messages memory managment microkernel hardware Podejście microkernel Device Driver CPU scheduling kernel mode
Struktura OS Struktura modułowa