MIMINF:Systemy operacyjne

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

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

  1. A. Silberschatz, P. Galvin, Podstawy systemów operacyjnych (wydanie trzecie, rozszerzone), WNT, 2000.
  2. G. Coulouris, J. Dollimore, T. Kindberg, Systemy rozproszone, podstawy i projektowanie, WNT, 1998.