Transcript Wykład 3

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ące 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 create Nazwa pliku do zapisu Plik do zapisu write close • Konieczna obsługa wyjątków – gdy tworzony plik już istnieje, lub wystąpi błąd parzystości • Przykład: instrukcje 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 X: parametry funkcji systemowej Wywołanie funkcji systemowej z parametrami Parametry funkcji systemowej Kod funkcji systemowej Użycie parametrów z tablicy X 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

Wolny obszar Wolny obszar Proces Interpreter poleceń jądro Interpreter poleceń jądro • Przykład MS-DOS • Wykonywanie współbieżne: programy TSR (terminate and stay resident)

Systemy wielozadaniowe

Proces 2 Wolny obszar Interpreter poleceń Proces 1 jądro • Przykład: Linux, Mac OS • Proces może być wykonywany na pierwszym planie, lub w tle

Komunikacja między procesami

Proces 2 K Proces 1 K Proces 2 Pamięć dzielona Proces 1 jądro K jądro • 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)

Serwer Win32 Aplikacja Win32 Aplikacja OS/2 Serwer OS/2 Serwer POSIX Aplikacja 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 Programy systemowe jądro Sprzęt Klasyczny system operacyjny jądro jądro jądro MW1 MW2 MW3 Implementacja maszyny wirtualnej Sprzęt

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