MIMINF:Systemy operacyjne
Wykład (30 godzin) + ćwiczenia (30 godzin) + laboratorium (30 godzin)
Opis
Podstawy projektowania i implementacji systemów operacyjnych. Architektura systemu operacyjnego, podział na moduły, funkcje modułów, algorytmy szeregowania stosowane w systemach operacyjnych, przydział procesora, zarządzanie pamięcią, systemy plików, rozproszone systemy operacyjne. Analiza (na podstawie źródeł) rzeczywistego systemu operacyjnego.
Laboratorium jest poświęcone aspektom praktycznym korzystania z systemów operacyjnych, administrowania systemami, tworzenia pakietów z oprogramowaniem, rekompilowania i konfigurowania jądra systemu operacyjnego. Student po zaliczeniu przedmiotu powinien znać podstawowe zagadnienia administrowania systemem oraz być w stanie dokonywać zmian w jądrze systemu.
Sylabus
Autorzy
- Janina Mincer Daszkiewicz
Wymagania wstępne
- Wstęp do programowania
- Architektura komputerów i sieci
Zawartość
Wykłady
- Wprowadzenie: zadania systemu operacyjnego, historia systemów uniksopodobnych, historia i cechy systemu operacyjnego Linux
- Podstawowe zasady: metody strukturalizacji systemów operacyjnych, abstrakcje, procesy, zasoby, projektowanie interfejsu użytkownika, organizacja urządzeń, wsparcie sprzętowe dla systemów operacyjnych, przerwania, tryby pracy procesora
- Współbieżność w systemach operacyjnych: pojęcie współbieżnego wykonania, procesy i wątki, przełączanie kontekstu, synchronizacja procesów (semafory, monitory), obsługa przerwań, wieloprogramowość
- Procesy: funkcje systemowe do obsługi procesów, struktury danych do opisu procesów, zmiana stanu procesu
- Problematyka zastoju: warunki konieczne i dostateczne powstania zastoju, metody zapobiegania, unikania (algorytm bankiera) i wykrywania zastoju
- Szeregowanie procesów: szeregowanie z wywłaszczaniem i bez wywłaszczania, strategie szeregowania, porównanie cech strategii
- Zarządzanie pamięcią: techniki niewirtualne zarządzania pamięcią, pamięć wirtualna, stronicowanie i segmentacja, stronicowanie na żądanie, tablice stron, migotanie, algorytmy wymiany stron, obsługa przerwania braku strony, zasada pola roboczego, pamięci podręczne
- Zarządzanie urządzeniami: typy urządzeń (blokowe i znakowe), wirtualizacja urządzeń, tablice rozdzielcze urządzeń, DMA, strategie buforowania.
- Systemy plików: podstawowe pojęcia (dane, metadane, organizacja, buforowanie, dostęp sekwencyjny i bezpośredni), interfejs systemu plików, struktury danych systemu plików, techniki systemu plików (partycjonowanie, montowanie, wirtualizacja systemów plików), pliki odwzorowane do pamięci, pliki specjalne, niskopoziomowe aspekty systemów plików
- Bezpieczeństwo i ochrona: polityka i mechanizmy bezpieczeństwa, dostęp i autentykacja, modele ochrony, szyfrowanie.
- Systemy rozproszone: cechy systemów rozproszonych, topologia sieci, protokoły, model ISO/OSI
- Rozproszone systemy plików: problemy, przykłady: NFS, AFS, Coda
- Pamięć w systemach rozproszonych: aspekty sprzętowe i programowe organizacji pamięci wspólnej w systemach wieloprocesorowych i wielokomputerowych, modele zgodności pamięci
Laboratorium
- Programowanie w języku interpretatora poleceń: pisanie procedur w języku interpretatora poleceń, budowa interpretatora poleceń.
- Administrowanie: startowanie systemu, dzienniki systemowe, pliki i katalogi systemowe, zarządzanie kontami użytkowników, demony systemowe (np. cron).
- Pakiety z oprogramowaniem: tworzenie pakietów z oprogramowaniem, korzystanie z pakietów RPM (Red Hat Package Manager), instalowanie systemu z pakietów.
- Jądro systemu: kompilacja i konfiguracja jądra systemu operacyjnego.
- Moduły jądra: instalowanie ładowalnych modułów jądra, pisanie modułów jądra, zależności między modułami.
- Sterowniki urządzeń: programowanie w przestrzeni adresowej jądra, synchronizacja na poziomie jądra (wirujące blokady, semafory systemowe), pisanie sterowników urządzeń.
- System plików procfs: interfejs użytkownika, rozszerzanie funkcjonalności procfs przez moduł jądra.
- Funkcje systemowe: korzystanie z funkcji systemowych, pisanie nowych funkcji systemowych.
- Zaawansowane wejście-wyście: multipleksowanie deskryptorów, pliki odwzorowane do pamięci, pisanie i czytanie techniką rozrzucania-zbierania, asynchroniczne wejście-wyjście.
- Śledzenie i odpluskwianie procesów
- Bezpieczeństwo systemu
Literatura
- A. Silberschatz, P. Galvin, Podstawy systemów operacyjnych (wydanie trzecie, rozszerzone), WNT, 2000.
- G. Coulouris, J. Dollimore, T. Kindberg, Systemy rozproszone, podstawy i projektowanie, WNT, 1998.