Nazwa przedmiotu:
Systemy operacyjne (E)
Koordynator przedmiotu:
Leszek OPALSKI
Status przedmiotu:
Fakultatywny dowolnego wyboru
Poziom kształcenia:
Studia II stopnia
Program:
Elektronika
Grupa przedmiotów:
Przedmioty techniczne - podstawowe
Kod przedmiotu:
SOE
Semestr nominalny:
1 / rok ak. 2019/2020
Liczba punktów ECTS:
4
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
Bilans nakładu pracy studenta: - udział w wykładach: 15 x 2 h = 30 h; - przygotowanie do wykładów (przejrzenie slajdów, notatek i podręcznika): 6h; - przygotowanie do sprawdzianów audytoryjnych (przeczytanie wskazanych rozdziałów podręcznika, udział w konsultacjach): 2 x 5h = 10h; - udział w zajęciach laboratoryjnych: 15h; - przygotowanie do zajęć laboratoryjnych (zapoznanie się z przykładowymi zadaniami, wykonanie zalecanych zadań domowych, przejrzenie slajdów, notatek i podręcznika): 6 x 8 h = 48 h. Suma: 30 + 6 + 10 + 15 + 48 = 109h (4ECTS).
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
3
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
1
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium15h
  • Projekt0h
  • Lekcje komputerowe0h
Wymagania wstępne:
Zakłada się umiejętność programowania w języku C.
Limit liczby studentów:
60
Cel przedmiotu:
Wykład ma na celu przedstawienie podstawowych pojęć i koncepcji związanych z budową, działaniem i wykorzystaniem współczesnych systemów operacyjnych, a także zapoznanie słuchaczy z dobrą praktyką wykorzystania mechanizmów systemowych do realizacji efektywnych i bezpiecznych aplikacji poziomu użytkownika. Zajęcia laboratoryjne kształtują umiejętność posługiwania się interfejsem funkcji systemowych do rozwiązywania zadań programistycznych, wymagających m.in. tworzenia i synchronizacji współbieżnych procesów bądź wątków, a także organizacji komunikacji (lokalnej i sieciowej) i synchronizacji współpracujących zadań.
Treści kształcenia:
Program wykładu 1. Wprowadzenie (2 h). Zadania i właściwości systemów operacyjnych. Struktury systemów komputerowych i systemów operacyjnych. Środowisko wykonania programów użytkowych: własności, interfejs. Wirtualizacja. 2. Procesy i wątki (6 h). Proces, jego atrybuty i stany. Atrybuty i modele wątków (1:n, 1:1, m:n); własności i wykorzystanie. Interfejsy procesów i wątków: POSIX i Win32. Sygnały POSIX oraz ich obsługa. Realizacja współbieżności procesów i wątków, przełączanie kontekstu, wywłaszczanie. Planowanie przydziału procesora, algorytmy planowania i ich własności. Specyfika szeregowania zadań w systemach czasu rzeczywistego. 3. Systemy plików (4 h). Plik, organizacja systemu plików. Operacje na systemie plików. Dostęp i ochrona plików, tryby dostępu do plików. Interfejs POSIX systemu plików; operacje wejścia-wyjścia a sygnały. Realizacja systemów plików. Systemy plików: FAT32, ext2, NTFS, ISO9660. 4. Zarządzanie pamięcią (4 h). Logiczna i fizyczna przestrzeń adresowa. Etapy wiązania składowych programu z adresami pamięci operacyjnej. Ładowanie dynamiczne, konsolidacja dynamiczna, nakładkowanie, wymiana. Schematy przydziału obszarów pamięci operacyjnej zadaniom. Stronicowanie, segmentacja, segmentacja ze stronicowaniem. Pamięć wirtualna. Racjonalne wykorzystanie hierarchicznie zorganizowanej pamięci w programach użytkowych. Specyfika zarządzania pamięcią w systemach czasu rzeczywistego. 5. Komunikacja i synchronizacja (6 h). Środki komunikacji lokalnej: pamięć współdzielona, kolejki komunikatów, łącza. Problem sekcji krytycznej i warunki poprawnego rozwiązania. Klasyczne problemy synchronizacji i ich rozwiązania z wykorzystaniem semaforów, muteksów, zmiennych warunkowych. Problem zakleszczania (zastojów) i podejścia do jego rozwiązania. Algorytm bankiera. Synchronizacja rozproszona. 6. Komunikacja sieciowa (4h). Wprowadzenie do warstwowego modelu komunikacji Internetowej. Wykorzystanie interfejsu gniazd do realizacji aplikacji sieciowych w układzie klient-serwer.. 7. Bezpieczeństwo i ochrona (3 h). Kontrola wiarygodności użytkowników i praw dostępu do zasobów. Mechanizmy ochrony. Wykorzystanie środków kryptograficznych do realizacji uwierzytelniania, poufności, integralności i niezaprzeczalności komunikacji sieciowej. 8. Przegląd współczesnych systemów operacyjnych (1 h) Zakres laboratorium Studenci realizują indywidualnie w czasie semestru zadania z każdej z następujących grup tematycznych: - Lab1. Skrypty powłoki; - Lab2. Procesy i sygnały - Lab3. Wątki i sygnały; - Lab4. Operacje na plikach i łączach; - Lab5. Synchronizacja procesów i wątków. - Lab6. Komunikacja sieciowa (interfejs gniazd)
Metody oceny:
Stopień opanowania materiału wykładowego oceniany jest podczas dwóch pisemnych sprawdzianów audytoryjnych (łącznie za 55 punktów, w standardowej 100-punktowej skali). W czasie zajęć laboratoryjnych studenci konstruują, pod opieką prowadzących zajęcia, programy w języku C o zadanych własnościach, korzystając z zadanego (i wprowadzonego na wykładzie) zestawu funkcji systemowych (POSIX). Przed każdym ćwiczeniem studentom udostępniane są szczegółowe informacje dotyczące zakresu przygotowania oraz przykładowe zadania (do rozwiązania przed zajęciami), zawierające elementy zadań realizowanych w laboratorium podczas tego ćwiczenia. Zajęcia Lab1 – Lab3 (typu A) trwają po 105 minut bez przerwy, można na nich uzyskać po 6 punktów. Zajęcia Lab4 – Lab6 (typu B) trwają po 165 minut bez przerwy; można na nich uzyskać po 9 punktów. Zadania zazwyczaj są wieloetapowe, aby możliwe było zaliczanie każdego etapu bezpośrednio po jego zakończeniu. Podczas prezentacji działania kodu przedstawionego do oceny studenci odpowiadają na pytania dotyczące rozwiązywanego problemu i wybranego sposobu realizacji rozwiązania. Rozwiązanie oceniane jest przede wszystkim z punktu widzenia poprawności użycia funkcji systemowych do realizacji zadanej funkcjonalności oraz poprawności obsługi sytuacji awaryjnych (jak nieprawidłowe dane, czy niepowodzenia wywołań funkcji systemowych). Pod koniec semestru organizowane są zajęcia dodatkowe (Lab7), przeznaczone na wykonanie jednego z ocenianych zajęć (Lab1 – Lab6) (dla odrobienia zaległości lub poprawy oceny). Przystąpienie do ćwiczenia powoduje, że dotychczasowa ocena za to ćwiczenie jest zastępowana przez nową ocenę.
Egzamin:
nie
Literatura:
Lektury do wykładu: 1. A. Silberschatz, P.B. Galvin, G. Gagne, Podstawy systemów operacyjnych, wyd. 6 zm. i rozsz., WNT 2005 (podręcznik). 2. W. Stallings, Systemy Operacyjne, Wyd. Robomatic, 2004. 3. U. Vahalia, Jądro systemu UNIX. Nowe horyzonty, WNT 2001 Literatura wspomagająca przygotowanie do ćwiczeń laboratoryjnych (do wyboru przez studenta) 1. R.W. Stevens, Programowanie w środowisku systemu UNIX, WNT 2002. 2. K. Haviland, D. Gray, B. Salama, Unix. Programowanie systemowe, Wyd. RM, Warszawa 1999. 3. K. Wall, Linux, programowanie w przykładach, MIKOM 2000. 4. M.J. Rochkind, Programowanie w systemie UNIX dla zaawansowanych, WNT, 1997
Witryna www przedmiotu:
http://koral.ise.pw.edu.pl/~lopalski/SOE/
Uwagi:
Wykład jest realizowany przemiennie przez ISE (L. Opalski) oraz IMiO (A. Wielgus). Laboratorium realizuje ISE, IMiO, IRE. Bieżące informacje o przedmiocie są dostępne w serwisie studia.

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka W_02
Student, który zaliczył przedmiot,posiada uporządkowaną wiedzę na temat : a) środków synchronizacji, podstawowych schematów synchronizacji oraz problemu zakleszczeń. b) technik zarządzania pamięcią w tym na temat pamięci wirtualnej; c) problemów ochrony oraz podstawowych środków zapewnienia bezpieczeństwa
Weryfikacja: sprawdzian audytoryjny Spr2, ćwiczenia laboratoryjne: Lab4, Lab5, Lab6
Powiązane charakterystyki kierunkowe: K_W02, K_W04
Powiązane charakterystyki obszarowe:
Charakterystyka W01
Student, który zaliczył przedmiot, posiada uporządkowaną wiedzę na temat : a) zadań, właściwości i budowy systemów operacyjnych; b) podstawowych sposobów realizacji współbieżności (procesy, wątki) ; c) planowania przydziału czasu procesora, d) budowy i własności podstawowych typów systemów plików, e) środków komunikacji pomiędzy procesami (pamięć współdzielona, kolejki komunikatów, łącza)
Weryfikacja: sprawdzian audytoryjny Spr1, ćwiczenia laboratoryjne: Lab1, Lab2, Lab3, Lab4
Powiązane charakterystyki kierunkowe: K_W02, K_W04
Powiązane charakterystyki obszarowe:

Profil ogólnoakademicki - umiejętności

Charakterystyka U01
Student, który zaliczył przedmiot potrafi posłużyć się wywołaniami programów i funkcji systemowych (POSIX) do realizacji: a) przetwarzania wsadowego przy wykorzystaniu skryptów powłoki, b) aplikacji wieloprocesowych oraz wykorzystania w nich obsługi sygnałów, c) aplikacji wielowątkowych oraz wykorzystania w nich obsługi sygnałów, d) aplikacji korzystających z operacji na plikach i łączach
Weryfikacja: Wpisz opis
Powiązane charakterystyki kierunkowe: K_U01, K_U09, K_U15
Powiązane charakterystyki obszarowe: