MIMINF:Systemy operacyjne

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Wykład (30 godzin) + ćwiczenia (30 godzin) + laboratorium (30 godzin)

Opis

Celem zajęć jest przedstawienie roli i zadań systemu operacyjnego w oprogramowaniu komputera oraz omówienie zagadnień realizacji — algorytmów, struktur danych i ich implementacji. Prezentowane są techniki zarządzania podstawowymi zasobami sprzętowymi komputera — procesorem, pamięcią operacyjną oraz wirtualną i urządzeniami wejścia-wyjścia — oraz ich wpływ na efektywność funkcjonowania systemu jako całości. W kontekście zarządzania zasobami wprowadzana jest również koncepcja procesu oraz wątku. Omawiana jest koncepcja pliku oraz realizacja systemu plików — warstwy logicznej i fizycznej — wraz z przykładami konkretnych implementacji. Osobnym zagadnieniem, integralnie związanym z realizacją systemu operacyjnego, jest współbieżność i synchronizacja. W kontekście podstawowych problemów synchronizacji, takich jak wzajemne wykluczanie oraz ograniczone buforowanie, omawiane są podejścia do synchronizacji procesów, bazujące na współdzielonych zmiennych, podejścia wspierane przez system operacyjny — semafory, oraz podejścia wymagające wsparcia w konstrukcjach programowych języków wysokopoziomowych — monitory, regiony krytyczne i spotkania (ang. rendezvous). Ilustruje się zastosowanie omawianych mechanizmów do rozwiązywania klasycznych problemów synchronizacji (problem producenta-konsumenta, czytelników i pisarzy, pięciu filozofów itp.). Omawiany jest również problem wynikający z dostępu współbieżnych procesów do zasobów — zakleszczenie oraz podejścia do rozwiązywania tego problemu.

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, a także robienia zmian w jądrze. Ponadto studenci powinni nabyć umiejętność programowania współbieżnego z zastosowaniem wielowątkowości i różnych mechanizmów synchronizacji procesów.

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.