Wykład nr 3: Struktura systemu operacyjnego Systemy operacyjne Wykład nr 3: Struktura systemu operacyjnego Piotr Bilski
Składowe systemu operacyjnego Moduł zarządzania procesami Moduł zarządzania pamięcią operacyjną Moduł zarządzania plikami Moduł zarządzania systemem I/O Moduł zarządzania pamięcią pomocniczą Moduł zarządzania interfejsami sieciowymi System ochrony Interpreter poleceń
Zarządzanie procesami Proces – wykonywany program, znajdujący się w pamięci i posiadający kontekst Istnieją zarówno procesy systemowe, jak i użytkowe Proces korzysta z zasobów: pamięci, czasu procesora, urządzeń we-wy Program jest pasywny, proces – aktywny
Operacje systemu na procesach Tworzenie i usuwanie procesów Wstrzymywanie i wznawianie procesów Zapewnianie mechanizmów synchronizacji procesów Zapewnianie mechanizmów komunikacji procesów Zapewnianie mechanizmów obsługi zakleszczeń
Zarządzanie pamięcią operacyjną Pamięć jest magazynem dla działających procesów oraz danych, na których pracują Program wykonywany musi być adresowany za pomocą adresów bezwzględnych i znajdować się w pamięci Zarządzanie pamięcią zależy od rozwiązań sprzętowych systemu
Operacje systemu na pamięci Utrzymywanie ewidencji zajętych fragmentów pamięci Identyfikacja procesów, do których należą poszczególne fragmenty pamięci Przydzielanie wolnych obszarów pamięci nowym procesom Przydzielanie i zwalnianie obszarów pamięci w zależności od potrzeb
Zarządzanie plikami Pliki przechowywane są w pamięci trwałej w strukturze logicznej systemu Plik jest zbiorem informacji powiązanych ze sobą w sposób zdefiniowany przez jego twórcę Pliki przechowują programy albo dane Pliki są zorganizowane w katalogi (ułatwienie użytkowania!) System operacyjny realizuje abstrakcyjny model plików poprzez zarządzanie nośnikami pamięci masowej
Operacje systemu na plikach Tworzenie i usuwanie plików Tworzenie i usuwanie katalogów Zapewnianie operacji do manipulacji plikami i katalogami Odwzorowanie plików na obszary pamięci pomocniczej Składowanie plików na trwałych nośnikach pamięci
Zarządzanie systemem wejścia-wyjścia System operacyjny ukrywa przed użytkownikiem szczegóły sprzętu: podsystem wejścia-wyjścia (UNIX) Hardware Abstraction Layer (Windows) Moduł komunikacji ze sprzętem składa się z części zarządzającej pamięcią, ogólnej części sterującej urządzeniami oraz programów obsługi Konieczna jest obsługa przerwań oraz DMA
Zarządzanie pamięcią pomocniczą Pamięć pomocnicza służy jako magazyn dla programów i danych, które nie mieszczą się w pamięci głównej Realizowana głównie przez pamięć dyskową Wydajność jest głównym problemem
Operacje systemu na pamięci pomocniczej Zarządzanie wolnymi obszarami Przydział pamięci procesom i danym Planowanie dostępu do dysku
Wsparcie dla pracy sieciowej Sieć komputerowa jest medium komunikacyjnym dla systemu rozproszonego Konieczne implementacje protokołów dla przechowywania i przesyłania plików Zasoby dzielone umożliwiają wykonywanie obliczeń rozproszonych
Ochrona użytkowników i procesów Ochrona dotyczy dostępu procesów i użytkowników do zasobów systemu komputerowego Należy zdefiniować, co ma podlegać ochronie i jakiego rodzaju Ochrona musi obejmować interfejsy pomiędzy modułami systemowymi
Interpretacja poleceń Interpreter poleceń – interfejs między użytkownikiem i systemem operacyjnym Może znajdować się w jądrze Komunikacja z systemem odbywa się poprzez instrukcje sterujące Realizowany jako interpreter wiersza poleceń (command line interpreter) lub powłoka (shell) Przykłady: explorer (Windows), finder (Mac OS) ksh, csh, bash, tcsh, KDE (Linux), CDE (Solaris)
Usługi systemu operacyjnego Wykonywanie programu Operacje wejścia-wyjścia Operacje na systemie plików Komunikacja międzyprocesowa (IPC) Wykrywanie błędów Przydzielanie zasobów procesom Rozliczanie użytkowników Ochrona
Wywołania systemowe Tworzą interfejs między procesem a systemem operacyjnym Mogą być wywołane wewnątrz programu Programista może korzystać z funkcji systemowych poprzez API
Przykład wywołań systemowych – czytanie i pisanie do pliku Nazwa pliku do odczytu close open Plik do odczytu read Nazwa pliku do zapisu create write Plik do zapisu close Konieczna obsługa wyjątków – gdy tworzony plik już istnieje, lub wystąpi błąd parzystości Przykład: instruckje fprintf, fscanf (C), cin, cout (C++)
Implementacja wywołań systemowych Konieczna identyfikacja funkcji systemowej Metody przekazywania parametrów do systemu operacyjnego: Rejestry procesora Blok Stos
Przekazywanie parametrów za pomocą tablicy Parametry funkcji systemowej X: parametry funkcji systemowej Kod funkcji systemowej Użycie parametrów z tablicy X Wywołanie funkcji systemowej z parametrami Program użytkownika System operacyjny
Rodzaje funkcji systemowych Nadzorowanie procesów Zarządzanie plikami Zarządzanie urządzeniami Utrzymywanie informacji Komunikacja
Nadzorowanie procesów Zakończenie planowe (end) lub wyjątkowe (abort) Załadowanie (load) i wykonanie (execute) Tworzenie (create process) i likwidacja (terminate process) Pobieranie atrybutów (get process attributes) i ich ustawianie (set process attributes) Czekanie na zdarzenie (wait for event) i określoną ilość czasu (wait for time) Przydział pamięci (allocate memory) i zwolnienie (free memory) Zrzucanie zawartości pamięci (dump), śledzenie wykonania programu (tracr)
Zarządzanie plikami Utworzenie pliku (create file) u jego usunięcie (delete file) Otwarcie (open) i zamknięcie (close) Czytanie (read), pisanie (write), zmiana położenia (reposition) Czytanie atrybutów (get file attributes) i ustawienie (set file attributes)
Zarządzanie urządzeniami Zamówienie (request device), zwolnienie (release device) Czytanie (read), pisanie (write), zmiana położenia (reposition) Czytanie atrybutów (get device attributes), ustawianie atrybutów (set device attributes) Podłączenie logiczne (logical attach) i odłączenie (logical detach)
Utrzymywanie informacji Pobranie czasu/daty (get time or date), ustawienie czasu/daty (set time or date) Pobranie danych systemowych (get system data), ustawienie danych systemowych (set system data) Pobranie atrybutów procesu, pliku lub urządzenia (get process/file/device attribute) Ustawienie atrybutów procesu, pliku lub urządzenia (set process/file/device attribute)
Komunikacja Utworzenie/usunięcie połączenia komunikacyjnego (create/delete communication connection) Nadawanie, odbieranie komunikatów (send/receive messages) Przekazywanie informacji o stanie (transfer status information) Przyłączanie/odłączanie urządzeń zdalnych (attach/detach remote devices)
Systemy jednozadaniowe jądro Interpreter poleceń Wolny obszar jądro Interpreter poleceń Wolny obszar Proces Przykład MS-DOS Wykonywanie współbieżne: programy TSR (terminate and stay resident)
Systemy wielozadaniowe jądro Interpreter poleceń Wolny obszar Proces 1 Proces 2 Przykład: Linux, Mac OS Proces może być wykonywany na pierwszym planie, lub w tle
Komunikacja między procesami jądro Proces 1 Proces 2 K jądro Proces 1 Proces 2 Pamięć dzielona Procesy realizujące połączenia to demony/usługi
Oprogramowanie systemowe Zarządzanie plikami (tworzenie, usuwanie, drukowanie itp.) Informowanie o stanie systemu Modyfikowanie plików (edycja) Zaplecze dla języków programowania (kompilatory, interpretery) Ładowanie i wykonywanie programów (konsolidatory, moduły ładujące nakładki) Komunikacja (tworzenie i utrzymywanie połączeń między procesami)
Systemowe programy użytkowe Programy wchodzące w skład systemu operacyjnego Interpreter poleceń może zawierać kod wykonujący polecenia, lub przekazać zadanie do programu systemowego (UNIX) Powłoka służy tworzeniu abstrakcji pomiędzy użytkownikiem i sprzętem
Struktura systemu operacyjnego Struktura odzwierciedla stopień zaawansowania i rozmiary systemu Przykłady Struktury proste (MS DOS) Struktury warstwowe (OS/2, Windows NT) Mikrojądra (Mac OS)
Struktura prosta (MS DOS) Program użytkowy Rezydentne programy systemowe Moduły obsługi urządzeń z poziomu systemu Moduły obsługi urządzeń w pamięci ROM BIOS
Struktura warstwowa (UNIX) Użytkownicy Powłoki i polecenia Kompilatory i interpretery Biblioteki systemowe Interfejs funkcji systemowych jądra Sterowniki terminali Terminale Sterowniki urządzeń Dyski i taśmy Sterowniki pamięci Pamięć operacyjna
Mikrojądro (Windows NT) Aplikacja Win32 Serwer Win32 Aplikacja OS/2 Serwer OS/2 Aplikacja POSIX Serwer POSIX jądro Windows NT ma budowę hybrydową (od wersji 4.0) Każdy obsługiwany podsystem ma strukturę klient-serwer
Maszyny wirtualne Procesy Procesy Programy użytkowe jądro jądro jądro Programy systemowe Programy użytkowe Procesy Procesy jądro jądro jądro MW1 MW2 MW3 Implementacja maszyny wirtualnej Sprzęt Sprzęt Klasyczny system operacyjny
Realizacja maszyn wirtualnych Komunikacja między maszynami poprzez dyski wirtualne (spooling i system plików) Maszyna jest „zwykłym” programem użytkownika (pracuje w trybie użytkownika) Aplikacje wewnątrz maszyny mają wirtualne tryby użytkownika i nadzorcy Maszyna wirtualna może być powolna!
Wirtualna maszyna Javy Symulator nieistniejącego komputera Budowa: moduł ładujący klasy, weryfikator klas, interpreter języka Kompilacja kodu źródłowego do bajtkodu Śmieciarka (garbage collector) automatycznie usuwa obiekty, które nie są potrzebne Java dostarcza neutralny interfejs