Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Systemy operacyjne
Tok studiów:
2019/2020
Kod:
IINF-1-504-n
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka
Semestr:
5
Profil:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma studiów:
Niestacjonarne
Prowadzący moduł:
Koźlak Jarosław (kozlak@agh.edu.pl)
Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć

Przegląd popularnych systemów operacyjnych. Podstawowe systemowe mechanizmy, algorytmy i ich wykorzystanie.
Nabycie umiejętności programowania wykorzystującego mechanizmy systemowe.

Opis efektów uczenia się dla modułu zajęć
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Powiązania z KEU Sposób weryfikacji i oceny efektów uczenia się osiągniętych przez studenta w ramach poszczególnych form zajęć i dla całego modułu zajęć
Wiedza: zna i rozumie
M_W001 Student zna i rozumie strukturę i działanie procesów i wątków oraz sposoby ich zarządzanie przez system operacyjny. INF1A_W05 Egzamin
M_W002 Student zna i rozumie podstawowe zagadnienia organizacji i działania systemów plików. INF1A_W05 Egzamin
M_W003 Student zna i rozumie podstawowe pojęcia związane z klasyfikacją systemów operacyjnych, ich funkcjonalnościami i architekturami popularnych (Unix, Linux, Windows) systemów operacyjnych. INF1A_W06, INF1A_W05 Egzamin
M_W004 Student zna i rozumie schematy organizacyjne pamięci oraz pamięci wirtualnej w systemach operacyjnych. INF1A_W05 Egzamin
M_W005 Student zna i rozumie podstawowe zagadnienia problemów synchranizacyjnych, stosowanych mechanizmów synchronizacyjnych i algorytmy zapobiegania i unikania zakleszczeń. INF1A_W05 Egzamin,
Projekt
M_W006 Student zna i rozumie podstawy budowy i działania sterowników urządzeń wejścia-wyjścia. INF1A_W05 Egzamin
Umiejętności: potrafi
M_U001 Student potrafi efektywnie wykorzystywać dostępne w języku C/C++ funkcje bibliotecznych do implementacji mechanizmów systemowych, programując na poziomie użytkownika INF1A_U07 Wykonanie projektu
M_U002 Student potrafi projektować i implementować oprogramowanie wykorzystujące mechanizmy systemowe INF1A_U07 Wykonanie projektu
Kompetencje społeczne: jest gotów do
M_K001 Student potrafi logicznie zaprezentować swoje rozwiązanie i uzasadnić decyzje, które podjął w trakcie jego przygotowania. INF1A_K05, INF1A_K04 Odpowiedź ustna,
Prezentacja
Liczba godzin zajęć w ramach poszczególnych form zajęć:
SUMA (godz.)
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
32 16 0 16 0 0 0 0 0 0 0 0
Matryca kierunkowych efektów uczenia się w odniesieniu do form zajęć i sposobu zaliczenia, które pozwalają na ich uzyskanie
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Forma zajęć dydaktycznych
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
Wiedza
M_W001 Student zna i rozumie strukturę i działanie procesów i wątków oraz sposoby ich zarządzanie przez system operacyjny. + - + - - - - - - - -
M_W002 Student zna i rozumie podstawowe zagadnienia organizacji i działania systemów plików. + - + - - - - - - - -
M_W003 Student zna i rozumie podstawowe pojęcia związane z klasyfikacją systemów operacyjnych, ich funkcjonalnościami i architekturami popularnych (Unix, Linux, Windows) systemów operacyjnych. + - - - - - - - - - -
M_W004 Student zna i rozumie schematy organizacyjne pamięci oraz pamięci wirtualnej w systemach operacyjnych. + - + - - - - - - - -
M_W005 Student zna i rozumie podstawowe zagadnienia problemów synchranizacyjnych, stosowanych mechanizmów synchronizacyjnych i algorytmy zapobiegania i unikania zakleszczeń. + - + - - - - - - - -
M_W006 Student zna i rozumie podstawy budowy i działania sterowników urządzeń wejścia-wyjścia. + - - - - - - - - - -
Umiejętności
M_U001 Student potrafi efektywnie wykorzystywać dostępne w języku C/C++ funkcje bibliotecznych do implementacji mechanizmów systemowych, programując na poziomie użytkownika - - + - - - - - - - -
M_U002 Student potrafi projektować i implementować oprogramowanie wykorzystujące mechanizmy systemowe - - + - - - - - - - -
Kompetencje społeczne
M_K001 Student potrafi logicznie zaprezentować swoje rozwiązanie i uzasadnić decyzje, które podjął w trakcie jego przygotowania. - - + - - - - - - - -
Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 139 godz
Punkty ECTS za moduł 5 ECTS
Udział w zajęciach dydaktycznych/praktyka 32 godz
przygotowanie projektu, prezentacji, pracy pisemnej, sprawozdania 70 godz
Samodzielne studiowanie tematyki zajęć 30 godz
Egzamin lub kolokwium zaliczeniowe 2 godz
Dodatkowe godziny kontaktowe 5 godz
Szczegółowe treści kształcenia w ramach poszczególnych form zajęć (szczegółowy program wykładów i pozostałych zajęć)
Wykład (16h):

1. Rodzaje i struktura systemów operacyjnych. Definicja podstawowych pojęć. Systemy monolityczne i warstwowe. Architektura mikrojądra. (2 godziny)
2. Architektura jądra wybranych systemów Unix, systemu Linux i systemu Windows. (2 godziny)
3. Budowa procesu. Stany procesu. Tworzenie procesów. Przodek i potomek. Wątki. Budowa wątku. Wątki poziomu użytkownika. Wątki jądra. Procesy lekkie. Modele wielowątkowości (2 godziny).
4. Algorytmy planowania przydziału procesora w środowiskach jedno i wielo procesorowych. (2 godziny)
5. Synchronizacja. Sekcja krytyczna. Rozwiązanie problemu sekcji krytycznej. Semafory. Monitory. Problemy czytelników i pisarzy, producentów i konsumentów, filozofów.(2 godziny)
6. Zakleszczenia. Warunki zajścia. Graf przydziału zasobów. Zapobieganie i unikanie. Stan i ciąg bezpieczny. Algorytm bankiera (1 godzina).
7. Organizacja pamięci w trakcie rozwoju systemów operacyjnych. Fragmentacja. Koncepcje segmentacji i stronicowania, cele i sposoby realizacji.(1 godzina.)
8. Pamięć wirtualna. Algorytmy zastępowania stron. Zastępowanie lokalne i globalne. Szamotanie. Zbiór roboczy (2 godziny)
9. System plików. Budowa plików i katalogów. Przydział miejsca na dysku. (1 godzina)
10. Zarządzanie wejściem-wyjściem. Odpytywanie. Przerwania. Bezpośredni dostęp do pamięci. Sterowniki urządzeń. (1 godzina)

Ćwiczenia laboratoryjne (16h):
-
Pozostałe informacje
Metody i techniki kształcenia:
  • Wykład: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej w połączeniu z klasycznym wykładem tablicowym wzbogaconymi o pokazy odnoszące się do prezentowanych zagadnień.
  • Ćwiczenia laboratoryjne: W trakcie zajęć laboratoryjnych studenci samodzielnie rozwiązują zadany problem praktyczny, dobierając odpowiednie narzędzia. Prowadzący stymuluje grupę do refleksji nad problemem, tak by otrzymane wyniki miały wysoką wartość merytoryczną.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Zasady udziału w zajęciach:
  • Wykład:
    – Obecność obowiązkowa: Nie
    – Zasady udziału w zajęciach: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
  • Ćwiczenia laboratoryjne:
    – Obecność obowiązkowa: Tak
    – Zasady udziału w zajęciach: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu wszystkich zajęć laboratoryjnych.
Sposób obliczania oceny końcowej:

1. Aby uzyskać pozytywną ocenę końcową niezbędne jest uzyskanie pozytywnej oceny z projektu oraz zaliczenie egzaminu z części wykładowej.
Egzamin ustny. Projekt oceniany na podstawie jakości stworzonego systemu/rozwiązania zadanego problemu, jakości dokumentacji, systematyczności i terminowości prac.
2. Obliczamy średnią arytmetyczną (sr) z ocen z zaliczenia laboratorium i wykładów (egzaminu), uzyskanych we wszystkich terminach.
3. Wyznaczmy ocenę końcową na podstawie zależności:
if sr>4.75 then OK:=5.0 else
if sr>4.25 then OK:=4.5 else
if sr>3.75 then OK:=4.0 else
if sr>3.25 then OK:=3.5 else OK:=3
4. Wyrównywane zaległości: Podczas konsultacji lub następnych zajęć. Możliwość zaliczenia projektu w terminie poprawkowym.

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

Wymagania wstępne i dodatkowe, z uwzględnieniem sekwencyjności modułów :

Umiejętność programowania w języku C w dowolnym systemie. Umiejętność obsługi systemów typu Unix na poziomie użytkownika

Zalecana literatura i pomoce naukowe:

Literatura podstawowa

  1. Abraham Silberschatz, Peter B. Galvin, "Podstawy systemów operacyjnych", WNT, 2005 (wyd. 6 zmienione), // , A. Silberschatz, P.B. Galvin, G. Gagne. „Operating System Concepts. Eighth Edition”, John Wiley & Sons Inc, 2009
  2. William Stallings, „Systemy operacyjne”, 2006, //, William Stallings, „Operating Systems. Internals and Design Principles”. Ninth Edition, Pearson Prentice Hall, 2017
  3. Iszkowski, M. Maniecki “Programowanie współbieżne`”, Wydawnictwo Naukowo-Techniczne,  Warszawa 1982.
  4. W. Richard Stevens, „Programowanie w środowisku systemu Unix”, WNT, 2002., //, W. Richard Stevens, Stephen A. Rago, "Advanced programming in the Unix Environment", Third Edition, Addison Wesley Publishing Company, 2013
  5. Mark Mitchell, Jeffrey Oldham, Alex Samuel, "Linux. Programowanie dla zaawansowanych", Wydawnictwo ReadMe, 2002, //, "Advanced Linux Programming", New Riders Publishing, 2001
  6. Michael Kerrisk, A Linux and Unix System Programming Handbook, no starch press. 2010.

Literatura uzupełniająca

  1. Andrew S. Tanenbaum, "Modern Operating Systems", Third Edition, Prentice Hall International, 2008
  2. Andrew S. Tanenbaum, Albert S. Woodhull, "Operating Systems. Design and Implementation" Prentice-Hall International, Inc. , 3rd ed, 2006
  3. Thomas W. Doeppner, „Operating Systems in Depth”, Wiley, 2010
  4. Thomas Anderson, Michael Dahlin, „Operating Systems. Principles & Practice”, Second Edition, 2011-2014
  5. Uresh Vahalia, „Jądro systemu Unix…”, WNT 2001
  6. Robert Love, „Linux Kernel Development”, Novel Press, Third edition, 2010
  7. Z. Weiss, T. Gruźlewski  “Programowanie współbieżne i rozproszone w przykładach i zadaniach, Wydawnictwo Naukowo-Techniczne,  Warszawa 199
  8. W. Richard Stevens, “Unix: Programowanie sieciowe”, t1-t2 WNT, 2000,2001
    #Marc J. Rochkind, „Advanced UNIX Programming”, Addison-Wesley, Second edition, 2004
Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

1. Probabilistyczne wykrywanie anomalii z wykorzystaniem analizy odwołań systemowych — [A probabilistic anomaly detection using analysis of system calls] / Paweł Król, Przemysław MACIOŁEK, Jarosław KOŹLAK // Informatyka Teoretyczna i Stosowana = Computer Science / Politechnika Częstochowska. Instytut Matematyki i Informatyki ; ISSN 1643-2355. — 2006 R. 6 nr 10 s. 243–255. — Bibliogr. s. 25
2. Probabilistic anomaly detection based on system calls analysis — Probabilistyczne rozpoznawanie anomalii bazujące na analizie wywołań systemowych / Przemysław MACIOŁEK, Paweł Król, Jarosław KOŹLAK // Computer Science : rocznik Akademii Górniczo-Hutniczej imienia Stanisława Staszica w Krakowie ; ISSN 1508-2806. — 2007 vol. 8 spec. ed. s. 93–108. — Bibliogr. s. 107–108

Informacje dodatkowe:

Brak