System komputerowy - hardware (schemat uproszczony) System operacyjny 3.1 3.2 Struktury systemów operacyjnych Składniki systemu Składniki systemu Usługi systemowe Funkcje systemowe (system calls) Programy systemowe Struktura systemu Maszyny wirtualne Projektowanie systemu i implementacja Generowanie systemu Zarządzanie procesami Zarządzanie pamięcią główną Zarządzanie plikami Zarządzanie systemem we/wy Zarządzanie pamięcią pomocniczą Zarządzanie pracą wsieci System ochrony System interpretacji poleceń 3.3 3.4 Zarządzanie procesami Zarządzanie pamięcią główną Proces to program w trakcie wykonywania. Proces wymaga zasobów (czas CPU, pamięć, pliki, urządzenia we/wy) aby wykonać zadanie. System operacyjny odpowiada za następujące działania związane z zarządzaniem procesami: Tworzenie i usuwanie procesu. Zawieszanie i odwieszanie procesu. Dostarcza mechanizmów do: synchronizacji procesów komunikacji między procesami. Pamięć jest zorganizowana w postaci wielkiej tablicy słów lub bajtów wskazywanych przez adres. Jest zbiornikiem danych o szybkim dostępie dzielonym między CPU i urządzenia we/wy. Pamięć główna jest ulotna (volatile). Traci swoją zawartość w razie awarii systemu. System operacyjny jest odpowiedzialny za następujące działania związane z zarządzaniem pamięcią: Śledzenie zajętości pamięci (która część jest zajęta i przez kogo). Decydowanie, który proces załadować, gdy pojawi się wolne miejsce w pamięci. Przydzielanie (allocation) i zwalnianie (deallocation) pamięci stosownie do potrzeb. 3.5 3.6 1
Zarządzanie plikami Zarządzanie systemem we/wy Plik jest zbiorem powiązanych ze sobą informacji, zdefiniowanych przez jego twórcę. Zwykle pliki zawierają programy (wersję źródłową iwynikową) oraz dane. System operacyjny jest odpowiedzialny za następujące działania związane z zarządzaniem plikami: Tworzenie i usuwanie plików. Tworzenie i usuwanie katalogów. Dostarczanie elementarnych operacji do manipulowania plikami i katalogami. Odwzorowanie plików na obszary pamięci pomocniczej. Składanie plików na trwałych nośnikach pamięci (na których informacja nie znika). System we/wy składa się z: Systemu buforowania notatnikowego Ogólnego interfejsu do programów obsługi urządzeń sprzętowych. Sterowników poszczególnych urządzeń sprzętowych. 3.7 3.8 Zarządzanie pamięcią pomocniczą Pamięć główna (main memory = primary storage) jestulotnai zbyt mała aby pomieścić wszystkie dane i programy dlatego potrzebna jest pamięć pomocnicza (secondary storage) stanowiąca zaplecze dla pamięci głównej. Większość współczesnych systemów komputerowych posługuje się pamięcią dyskową jako podstawowym środkiem magazynowania programów i danych. System operacyjny jest odpowiedzialny za następujące działania związane z zarządzaniem pamięcią pomocniczą: Zarządzanie obszarami wolnymi Przydzielanie pamięci Planowanie przydziałów obszarów pamięci Praca sieciowa (w systemie rozproszonym) System rozległy (distributed) to zbiór procesorów, które nie korzystają ze wspólnej pamięci ani zegara. Każdy procesor posiada swoją własną pamięć lokalną. Procesory w systemie rozproszonym są połączone za pośrednictwem sieci komunikacyjnej. Dla celów komunikacji stosowane są protokoły (protocol). System rozproszony umożliwia użytkownikowi dostęp do różnych zasobów systemowych. Dostęp do zasobów dzielonych pozwala na: Przyspieszenie obliczeń. Zwiększa osiągalność danych. Zwiększa pewność działania. 3.9 3.10 System ochrony System interpretacji poleceń Ochrona (Protection) jest mechanizmem nadzorowania dostępu programów, procesów lub użytkowników do zasobów zdefiniowanych przez system komputerowy. Mechanizm ochrony musi: Rozróżnić dostęp autoryzowany od nieautoryzowanego. Określić co podlega jakiej ochronie. Zapewnić środki wymuszania zaprowadzonych ustaleń. Wiele poleceń jest przekazywanych do systemu operacyjnego za pośrednictwem instrukcji sterujących (control statements): Tworzenie procesu i zarządzanie nim Obsługa we/wy Zarządzanie pamięcią pomocniczą Zarządzanie pamięcią główną (operacyjną) Dostęp dosystemuplików Ochrona Praca w sieci 3.11 3.12 2
System interpretacji poleceń (cd.) Program, który czyta i interpretuje polecenia jest nazywany: Interpreterem poleceń (command-line interpreter) Powłoką (ang. Shell), np. w systemie UNIX Jego zadaniem jest pobranie i wykonanie następnego polecenia. Usługi systemu operacyjnego Wykonanie programu (program execution) załadowanie programu do pamięci i rozpoczęcie jego wykonywania. Operacje we/wy (I/O operations) ponieważ programy użytkownika nie mogą wykonywać operacji we/wy bezpośrednio, więc środki do realizacji tych czynności musi mieć system operacyjny. Manipulowanie systemem plików (file-system manipulation) możliwość czytania, zapisu, tworzenia i usuwania plików. Komunikacja (communications) wymiana informacji między procesami wykonywanymi na tym samym komputerze lub na komputerach połączonych siecią. Komunikacja zachodzi za pośrednictwem pamięci dzielonej (shared memory) lub za pośrednictwem przekazywania komunikatów (message passing). Wykrywanie błędów (error detection) w CPU, pamięci, urządzeniach we/wy, programie użytkownika gwarantuje poprawność ispójność obliczeń. 3.13 3.14 Dodatkowe funkcje systemu Nie tyle pomagają użytkownikowi, co zapewniają poprawną pracę systemu. Przydział zasobów (resource allocation) wielu użytkownikom lub wielu zadaniom wykonywanym w tym samym czasie. Rozliczanie (accounting) przechowywanie danych o tym, którzy użytkownicy i w jakim stopniu korzystają z zasobów komputera (aby wystawić rachunek lub dla celów statystycznych). Ochrona (protection) zapewnia, że dostęp do zasobów systemu jest kontrolowany. Funkcje systemowe (System Calls) Funkcje systemowe tworzą interfejs między wykonywanym programem, a systemem operacyjnym. Zwykle dostępne na poziomie instrukcji asemblera. Języki zastępujące asembler w programowaniu systemowym (jak C, C++) pozwalają również na bezpośrednie korzystanie z tych funkcji. Metody przekazywania parametrów pomiędzy wykonywanym programem a systemem operacyjnym. Przekazywanie parametrów przez rejestry. Umieszczenie parametrów w tablicy i przekazanie adresu tablicy jako parametru poprzez rejestr. Za pośrednictwem stosu (stack): Program odkłada parametry na stosie: operacja: push (store) System operacyjny pobiera parametry ze stosu: operacja pop. 3.15 3.16 Przekazywanie parametrów za pomocą tablicy Rodzaje funkcji systemowych Nadzorowanie procesów (tworzenie, ładowanie, kończenie, zaniechanie, oczekiwanie, przydział zasobów itp.) Zarządzanie plikami (tworzenie, otwieranie, czytanie, pisanie itp.) Zarządzanie urządzeniami (zamówienie, zwolnienie, czytanie, pisanie itp.) Utrzymywanie informacji (pobranie daty, czasu, danych systemowych, określenie atrybutów procesu itp.) Komunikacja (tworzenie, usuwanie połączenia komunikacyjnego, nadawanie, odbieranie komunikatów, przekazywanie informacji o stanie itp.). 3.17 3.18 3
MS-DOS UNIX uruchamiający wiele programów Po inicjacji systemu Wykonywanie programu 3.19 3.20 Modele komunikacyjne Komunikacja za pomocą wymiany komunikatów albo za pośrednictwem pamięci. Przesyłanie komunikatów Pamięć dzielona Programy systemowe Programy systemowe tworzą wygodne środowisko do opracowania i wykonania innych programów. Można je podzielić na kilka kategorii: Manipulowanie plikami Informowanie o stanie systemu Modyfikowanie plików Translatory języków programowania Ładowanie i wykonywanie programów. Komunikacja (wymiana komunikatów, poczta elektroniczna, zdalne logowanie itp.) Programy użytkowe. Większość użytkowników postrzega system operacyjny przez pryzmat programów systemowych (a nie funkcji systemowych). 3.21 3.22 Struktura MS-DOS Warstwy MS-DOS MS-DOS został napisany pod kątem maksymalnej funkcjonalności przy oszczędności kodu. Brak podziału na moduły Interfejsy i poziomy funkcjonalne nie są wyraźnie wydzielone. 3.23 3.24 4
Struktura systemu UNIX Struktura systemu UNIX UNIX początkowo ograniczony przez cechy sprzętu. Składa się z dwóch odrębnych części: Programów systemowych Jądra Do jądra należy wszystko, co znajduje się powyżej sprzętu, a poniżej interfejsu do funkcji systemowych. Jądro zarządza systemem plików, planuje przydział procesora, zarządza pamięcią. 3.25 3.26 Podejście warstwowe Warstwy System operacyjny jest dzielony na warstwy: najniższa zarządza sprzętem, najwyższa stanowi interfejs użytkownika. Warstwa używa funkcji i usług należących tylko do warstwy niższej (leżącej bezpośrednio pod daną warstwą). 3.27 3.28 Struktura OS/2 Koncepcja mikrojądra Wjądrze, zwanym mikrojądrem (microkernel) pozostawia się niezbędne minimum funkcji, pozostałe przenosząc do przestrzeni użytkownika. Komunikacja z modułami użytkownika za pośrednictwem komunikatów. Korzyści: łatwość rozszerzania mikrojądra. łatwość przenoszenia kodu systemu do nowej architektury. zwiększona niezawodność (mniej kodu wykonuje się w trybie jądra) zwiększone bezpieczeństwo. 3.29 3.30 5
Jądro a mikrojądro systemu Struktura Windows NT Client-Server 3.31 3.32 Maszyny wirtualne Maszyny wirtualne Maszyna wirtualna (virtual machine) - wykorzystuje się abstrakcję podejścia warstwowego: traktujemy sprzęt i jądro systemu operacyjnego tak, jakby razem stanowiły hardware i taką maszynę nazywamy maszyną wirtualną. Maszyna wirtualna posiada interfejs identyczny jak interfejs gołego sprzętu. System operacyjny może tworzyć złudzenie, że wiele procesów pracuje na własnych procesorach, i z własną (wirtualną) pamięcią. 3.33 3.34 Maszyny wirtualne (cd.) Modele systemu Zasoby komputera fizycznego są dzielone pomiędzy maszyny wirtualne. Planowanie przydziału procesora (CPU) może wywoływać wrażenie, że każdy użytkownik ma własny procesor. Spooling (simultaneous peripherial operation on-line) i systemy plików pozwalają tworzyć wirtualne drukarki. Zwykła końcówka konwersacyjna do pracy w podziale czasu przejmuje rolę wirtualnej konsoli operatorskiej. Non-virtual Machine Virtual Machine 3.35 3.36 6
Maszyna wirtualna Javy Maszyna wirtualna Javy Program języka Java po kompilacji przyjmuje formę kodu bajtowego (bytecode) niezależnego od platformy, na której jest wykonywany przez wirtualną maszynę Javy - Java Virtual Machine (JVM). JVM składa się z: - programu ładującego klasy (class loader) - programu weryfikującego klasy (class verifier) - interpretera wykonującego (runtime interpreter) 3.37 3.38 Założenia projektowe systemu operacyjnego Cele użytkownika system operacyjny powinien być: wygodny w użyciu, łatwy do nauki, niezawodny, bezpieczny, szybki. Cele systemowe system operacyjny powinien być: łatwy do zaprojektowania, implementacji i pielęgnowania elastyczny, niezawodny, wolny od błędów wydajny. Mechanizm a polityka Mechanizmy określają, jak czegoś dokonać, a polityka decyduje o tym co ma być wykonane. Oddzielenie polityki od mechanizmów jest bardzo ważną zasadą pozwalającą uzyskiwać maksimum elastyczności przy zmianie decyzji składających się na politykę. 3.39 3.40 Implementacja systemu Generowanie Systemu (SYSGEN) Dawniej system operacyjny był pisany w całości w języku asemblera, obecnie może być pisany w językach wyższego poziomu. Kod napisany w języku wyższego poziomu: Może powstawać szybciej. Jest bardziej zwarty. Jest łatwiejszy do zrozumienia i sprawdzenia (debug). System operacyjny jest znacznie łatwiejszy do przenoszenia (instalowania na innym sprzęcie), jeśli został napisany w języku wysokiego poziomu. Systemy operacyjne są tak projektowane, aby można je było instalować na maszynach dowolnej klasy; system musi być jednak konfigurowany na komputerze danej klasy. Program konfigurujący (generujący system) SYSGEN potrzebuje informacji na temat konfiguracji sprzętu. Booting startowanie komputera przez ładowanie jądra systemu. Bootstrap program kod zapisany w ROM, który potrafi zlokalizować jądro, załadować je do pamięci i uruchomić. 3.41 3.42 7