Nazwa przedmiotu:
Systemy operacyjne 2
Koordynator przedmiotu:
Dr hab. inż. Leszek Jan Opalski, prof. PW, Mgr inż. Marcin Borkowski
Status przedmiotu:
Obowiązkowy
Poziom kształcenia:
Studia I stopnia
Program:
Informatyka
Grupa przedmiotów:
Wspólne
Kod przedmiotu:
1030-IN000-ISP-0245
Semestr nominalny:
4 / rok ak. 2017/2018
Liczba punktów ECTS:
4
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium15h
  • Projekt0h
  • Lekcje komputerowe0h
Wymagania wstępne:
Systemy operacyjne 1
Limit liczby studentów:
Laboratorium (ćwiczenia komputerowe) – 15-24 os. /grupa
Cel przedmiotu:
Celem przedmiotu jest zapoznanie studentów z zaawansowanymi problemami implementacji współczesnych systemów operacyjnych, a także kształtowanie umiejętności wykorzystania zaawansowanych mechanizmów systemowych do poprawnej realizacji (w środowisku POSIX/UNIX/Linux) aplikacji wieloprocesowych/wielowątkowych, wykorzystujących różne środki komunikacji międzyprocesowej i synchronizacji oraz komunikację sieciową. Po ukończeniu kursu studenci: 1. posiadają wiedzę na temat: - algorytmów planowania przydziału czasu procesora/procesorów i metod ich oceny, - organizacji i efektywnego wykorzystania pamięci systemu komputerowego, - zasady działania i efektywnego wykorzystania pamięci wirtualnej, - środków komunikacji pomiędzy procesami (pamięci współdzielonej, kolejek komunikatów, łączy), podstawowych środków i schematów synchronizacji oraz problemu zakleszczeń, - komunikacji za pomocą gniazd sieciowych, - problemów bezpieczeństwa i ochrony zasobów systemów komputerowych; 2. umieją: - wyznaczać wskaźniki jakości algorytmów przydziału czasu procesora, czy średni czas dostępu do pamięci, - wykrywać zakleszczenia algorytmów przydziału zasobów za pomocą algorytmu bankiera, - zaprojektować, napisać w języku C i przetestować stworzoną przez siebie prostą aplikację sieciową w układzie klient-serwer, wykorzystując interfejs gniazd sieciowych, kolejki komunikatów lub łącza.
Treści kształcenia:
Wykład: Komunikacja międzyprocesowa i synchronizacja. Komunikacja między procesami jednego systemu komputerowego: łącza nazwane (FIFO) i nienazwane (pipe), pamięć dzielona, kolejki komunikatów; synchronizacja współpracujących procesów i wątków: sposoby realizacji i interfejs programisty. Problem zakleszczania: model i metody postępowania. Realizacja systemów plików. Organizacja wybranych systemów plików. Dostęp i ochrona plików, tryby dostępu do plików. Podystem wejścia/wyjścia. Urządzenia znakowe i blokowe; tryby dostępu. Moduły obsługi urządzeń wejścia/wyjścia. Zarządzanie pamięcią. Organizacja pamięci operacyjnej i dostępu do pamięci przez procesor. Algorytmy przydziału pamięci. Modele wykorzystania pamięci przez proces. Pamięć wirtualna: budowa, własności, interfejs programisty. Komunikacja sieciowa. Model komunikacji OSI. Interfejs gniazd w programowaniu połączeniowych i bezpołączeniowych aplikacji sieciowych (w układzie klient-serwer). Problemy komunikacji i synchronizacji aplikacji sieciowych. Przykłady usług sieciowych. Szeregowanie zadań. Realizacja współbieżności procesów i wątków. Algorytmy szeregowania zadań (systemów jedno- i wieloprocesorowych). Specyfika szeregowania zadań w systemach czasu rzeczywistego. Ocena jakości algorytmów szeregowania. Ochrona i bezpieczeństwo systemów komputerowych. Cele ochrony. Uwierzytelnianie, kontrola dostępu do zasobów, integralność, niezaprzeczalność, poufność - koncepcje i realizacje. Standardy oceny bezpieczeństwa. Przegląd współczesnych systemów operacyjnych. Linux, MS Windows, QNX/Neutrino, freeRTOS. Wirtualizacja systemów komputerowych. Laboratorium: Wprowadzenie (1g). Łącza nazwane (FIFO) i nienazwane (pipe) (3g). Komunikacja międzyprocesowa (pamięć dzielona, kolejki komunikatów) (3g). Interfejs gniazd (3g). Synchronizacja (semafory) (3g). Indywidualna poprawa jednego ćwiczenia (2g).
Metody oceny:
Wykład: W semestrze odbędą się 2 sprawdziany wykładowe w terminach określonych w harmonogramie. Usprawiedliwiona nieobecność daje prawo do odbycia sprawdzianu w dodatkowym terminie (terminie sprawdzianu poprawkowego). Obowiązuje ten sam zakres materiału co w pierwotnym terminie. Student musi zgłosić wykładowcy zamiar przystąpienia do tego sprawdzianu najpóźniej jedną dobę przed tym terminem. Suma punktów do zdobycia za sprawdziany wykładowe wynosi 100 (po 50 za test). Laboratorium: Do dyspozycji studenta są zajęcia wprowadzające (L0), 4 ćwiczenia oceniane (L1, L2, L3, L4) oraz zajęcia (L5) poświęcone poprawie oceny z laboratorium. Ćwiczenia L1 i L3 mają układ: wejściówka sprawdzająca wiedzę techniczna wymaganą na zajęciach (z wykładu i man'a), tutorial ukazujący praktyczne aspekty użycia wiedzy technicznej związanej z tematyką zajęć i na koniec zadanie programistyczne ("łatwe"). Sprawdzana jest poprawność działania opracowanego programu na podstawie osiągania przez studentów z góry wyznaczonych punktów kontrolnych. Student okazuje efekt działania programu na ekranie monitora, prowadzący może zażądać pokazania również kodu. Maksymalna liczba punktów za każde z ćwiczeń: 25. Ćwiczenie L2 i L4 ma układ: wejściówka sprawdzająca poprawność rozumowania koncepcyjnego związanego z następującym zadaniem programistycznym ("trudnym"). W trakcie zajęć sprawdzane jest zaawansowanie wykonania zadania poprzez osiąganie poszczególnych punktów kontrolnych. Sprawdzeniu podlega nie tylko poprawność działania opracowanego programu ale i jakość kodu, który jest oceniany po zajęciach przez prowadzących. Maksymalna liczba punktów: 25. Szczegółowy sposób wyliczenia punktów oceny będzie podany dla każdego zadania oddzielnie. Rozwiązania wszystkich zadań (kod) podlegających ocenie muszą zostać przekazane prowadzącym w wymaganej formie. Zajęcia L5 poświęcone są na poprawianie oceny. Student może wybrać jeden temat, który chciałby poprawić lub nadrobić. Forma zadania będzie zgodna z tematem, który poprawia student. Nie ma możliwości poprawiania ani nadrabiania więcej niż jednego tematu w semestrze. Zajęcia odbywają się (bez przerw) wg harmonogramu. Zawartość grup laboratoryjnych oraz przydział grup do terminów harmonogramu zostanie uzgodniona z reprezentacją przed pierwszymi zajęciami. Uwagi ogólne: Wszystkie oceniane prace muszą być wykonywane samodzielnie. Niesamodzielność pracy, bądź korzystanie przez studenta z niedozwolonych materiałów powoduje uzyskanie z danej pracy/sprawdzianu 0p. W czasie wykonywania ocenianych prac pisemnych (jak wejściówki laboratoryjne) nie można korzystać z żadnych materiałów pisanych, nagrań dźwiękowych, środków komunikacji elektronicznej. W czasie realizacji tutoriali dozwolona (a wręcz zalecana) jest komunikacja studentów z prowadzącymi, a także pomiędzy sobą - jednak tak, by nie przeszkadzać osobom postronnym. W czasie rozwiązywania ocenianych programistycznych zadań laboratoryjnych można korzystać z tutoriala, własnych materiałów,rozwiązań zadań przykładowych, dokumentacji systemowej oraz Internetu jednak tak, by oceniana praca była dziełem samodzielnym. Punkty z wszystkich ocenianych elementów sumują się do 200. Do zaliczenia wymagane jest co najmniej 100p, oceny wyższe są wyznaczane co 20p metodą proporcjonalną. Dodatkowo aby zaliczyć przedmiot konieczne jest zdobycie co najmniej 50p z części laboratoryjnej i 50p z części wykładowej.
Egzamin:
nie
Literatura:
Podstawowa: 1. A. Silberschatz, P.B. Galvin, G. Gagne, Podstawy systemów operacyjnych, wyd. 6 zm. i rozsz., WNT 2005. 2. The GNU C Library Manual, http://www.gnu.org/software/libc/manual/. Uzupełniająca: 1. W. Stallings, Systemy operacyjne. Struktura i zasady budowy, Wyd. Naukowe PWN SA, 2006. 2. K. Stencel, Systemy operacyjne, Wyd. PJWSTK, 2004. 3. U. Vahalia, Jądro systemu UNIX. Nowe horyzonty, WNT 2001. 4. W.R. Stevens, Programowanie w środowisku systemu UNIX, WNT 2002. 5. M.K. Johnson, E.W. Troan, Oprogramowanie użytkowe w systemie Linux, WNT 2000. 6. K. Haviland, D. Gray, B. Salama, Unix. Programowanie systemowe, Wyd. RM, Warszawa 1999. 7. K. Wall, Linux, programowanie w przykładach, MIKOM 2000.
Witryna www przedmiotu:
e.mini.pw.edu.pl
Uwagi:

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Efekt W01
Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie architektury systemów operacyjnych z rodziny UNIX oraz technologii sieciowych
Weryfikacja: wejściówki na laboratoriach, testy audytoryjne
Powiązane efekty kierunkowe: K_W05
Powiązane efekty obszarowe: T1A_W03
Efekt W02
Zna metody, techniki i narzędzia stosowane przy rozwiązywaniu prostych zadań informatycznych z zakresu budowy systemów komputerowych opartych o system Linux/Unix, sieci komputerowych i technologii sieciowych
Weryfikacja: ocena z zadań wykonywanych podczas laboratorium, testy audytoryjne
Powiązane efekty kierunkowe: K_W11, K_W13
Powiązane efekty obszarowe: T1A_W07, T1A_W07
Efekt W03
Zna podstawowe problemy ochrony, wie o podstawowych środkach zapewnienia bezpieczeństwa systemów komputerowych
Weryfikacja: test audytoryjny, wejściówki na laboratoriach
Powiązane efekty kierunkowe: K_W14
Powiązane efekty obszarowe: T1A_W08

Profil ogólnoakademicki - umiejętności

Efekt U01
Potrafi pozyskiwać informacje z dokumentacji technicznej systemu (man) oraz z standardu POSIX (głównie w języku angielskim), potrafi przekształcić uzyskaną wiedzę na pisanie kodu niezależnego od platformy uniksowej
Weryfikacja: ocena z zadań wykonywanych podczas laboratorium
Powiązane efekty kierunkowe: K_U05, K_U07
Powiązane efekty obszarowe: T1A_U01, T1A_U03, T1A_U04, T1A_U06
Efekt U02
Potrafi przygotować, skompilować, sprawdzić i uruchomić program w języku C przy pomocy prostych narzędzi linii poleceń systemu
Weryfikacja: ocena z zadań wykonywanych podczas laboratorium
Powiązane efekty kierunkowe: K_U11
Powiązane efekty obszarowe: T1A_U09, T1A_U14, T1A_U15
Efekt U03
Ma umiejętność posługiwania się systemem Linux/Unix na poziomie API
Weryfikacja: ocena z zadań wykonywanych podczas laboratorium
Powiązane efekty kierunkowe: K_U15
Powiązane efekty obszarowe: T1A_U09, T1A_U15
Efekt U04
Ma umiejętność pisania prostych aplikacji do komunikacji sieciowej
Weryfikacja: ocena z zadań wykonywanych podczas laboratorium
Powiązane efekty kierunkowe: K_U18, K_U30
Powiązane efekty obszarowe: T1A_U16, T1A_U16
Efekt U05
Potrafi rozwiązywać proste zadania z zakresu systemów operacyjnych za pomocą metod analitycznych i symulacyjnych
Weryfikacja: test audytoryjny
Powiązane efekty kierunkowe: K_U09
Powiązane efekty obszarowe: T1A_U09

Profil ogólnoakademicki - kompetencje społeczne

Efekt K01
Rozumie konieczność ciągłego śledzenia zmian w dokumentacji nowych wersji bibliotek systemowego API oraz standardów takich jak POSIX
Weryfikacja: wejściówki na laboratorium
Powiązane efekty kierunkowe: K_K01
Powiązane efekty obszarowe: T1A_K01
Efekt K02
Rozumie potrzebę pisania kodu przenośnego oraz poprawnego podziału programu na biblioteki i funkcję umożliwiającego łatwe ponowne wykorzystanie kodu
Weryfikacja: ocena z zadań wykonywanych podczas laboratorium
Powiązane efekty kierunkowe: K_K04
Powiązane efekty obszarowe: T1A_K02, T1A_K05
Efekt K03
Potrafi samodzielnie wykonać mały projekt informatyczny związany z programowaniem na poziomie API systemu Linux
Weryfikacja: ocena z zadań wykonywanych podczas laboratorium
Powiązane efekty kierunkowe: K_K05
Powiązane efekty obszarowe: T1A_K03, T1A_K04