Nazwa modułu: Systemy operacyjne Rok akademicki: 2016/2017 Kod: IIN-1-403-s Punkty ECTS: 5 Wydział: Informatyki, Elektroniki i Telekomunikacji Kierunek: Informatyka Specjalność: - Poziom studiów: Studia I stopnia Forma i tryb studiów: - Język wykładowy: Polski Profil kształcenia: Ogólnoakademicki (A) Semestr: 4 Strona www: Osoba odpowiedzialna: Koźlak Jarosław (kozlak@agh.edu.pl) Osoby prowadzące: Bieniasz Sławomir (bieniasz@agh.edu.pl) prof. dr hab. inż. Cetnarowicz Krzysztof (cetnar@agh.edu.pl) Koźlak Jarosław (kozlak@agh.edu.pl) Kurdziel Marcin (kurdziel@agh.edu.pl) dr Siwik Leszek (siwik@agh.edu.pl) Opis efektów kształcenia dla modułu zajęć Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń) Wiedza M_W001 podstawowe pojęcia klasyfikujące systemy operacyjne, zadania i podstawową architekturę popularnych systemów operacyjnych (Unix i Windows) M_W002 budowę i działanie procesów i wątków oraz zarządzanie nimi przez system operacyjny. M_W003 rozwiązania podstawowych problemów synchronizacji oraz działanie mechanizmów synchronizacji, Kolokwium, Wykonanie ćwiczeń laboratoryjnych M_W004 problem zakleszczeń oraz metody zapobiegania i unikania zakleszczeniom 1 / 6
M_W005 mechanizmy komunikacji międzyprocesowej stosowane w popularnych systemach operacyjnych, Kolokwium, Wykonanie ćwiczeń laboratoryjnych, Wynik testu zaliczeniowego M_W006 organizację pamięci komputera (stronicowanie i segmentacja) i sposoby ich realizacji w praktyce M_W007 podstawy wykorzystania segmentów do procesu statycznego łączenia modułów, strukturę modułów przemieszczalnych i tworzenie programów w wyniku łączenia modułów. M_W008 podstawy wykorzystania segmentów do dynamicznego łączenia modułów, proces łączenia dynamicznego, strukturę wykonywanego przez system operacyjny procesu. M_W009 podstawy budowy i działania systemów plików. M_W010 podstawy budowy i działania urządzeń wejścia-wyjścia M_W011 Student zna możliwości standardowych bibliotek C/C++ w zakresie zadań ćwiczonych podczas laboratorium, Wykonanie ćwiczeń laboratoryjnych, Wynik testu zaliczeniowego, Zaliczenie laboratorium M_W012 Student potrafi dobrać i zastosować mechanizmy systemowe i funkcje biblioteczne, do realizacji zadanych problemów, IN1A_U12 Wykonanie projektu, Wykonanie ćwiczeń laboratoryjnych, Wynik testu zaliczeniowego 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 IN1A_U12 Projekt, Wykonanie ćwiczeń laboratoryjnych, Wynik testu zaliczeniowego M_U013 Student potrafi projektować i implementować oprogramowanie wykorzystujące mechanizmy systemowe IN1A_U12 Wykonanie projektu, Wykonanie ćwiczeń laboratoryjnych, Wynik testu zaliczeniowego Matryca efektów kształcenia w odniesieniu do form zajęć Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć Wykład Ćwiczenia audytoryjne Ćwiczenia laboratoryjne Ćwiczenia projektowe Konwersatori um seminaryjne praktyczne terenowe warsztatowe Inne E-learning Wiedza 2 / 6
M_W001 M_W002 M_W003 M_W004 M_W005 M_W006 M_W007 M_W008 M_W009 M_W010 M_W011 podstawowe pojęcia klasyfikujące systemy operacyjne, zadania i podstawową architekturę popularnych systemów operacyjnych (Unix i Windows) budowę i działanie procesów i wątków oraz zarządzanie nimi przez system operacyjny. rozwiązania podstawowych problemów synchronizacji oraz działanie mechanizmów synchronizacji problem zakleszczeń oraz metody zapobiegania i unikania zakleszczeniom mechanizmy komunikacji międzyprocesowej stosowane w popularnych systemach operacyjnych organizację pamięci komputera (stronicowanie i segmentacja) i sposoby ich realizacji w praktyce podstawy wykorzystania segmentów do procesu statycznego łączenia modułów, strukturę modułów przemieszczalnych i tworzenie programów w wyniku łączenia modułów. podstawy wykorzystania segmentów do dynamicznego łączenia modułów, proces łączenia dynamicznego, strukturę wykonywanego przez system operacyjny procesu. podstawy budowy i działania systemów plików. podstawy budowy i działania urządzeń wejścia-wyjścia Student zna możliwości standardowych bibliotek C/C++ w zakresie zadań ćwiczonych podczas laboratorium 3 / 6
M_W012 Umiejętności M_U001 M_U013 Student potrafi dobrać i zastosować mechanizmy systemowe i funkcje biblioteczne, do realizacji zadanych problemów Student potrafi efektywnie wykorzystywać dostępne w języku C/C++ funkcje bibliotecznych do implementacji mechanizmów systemowych, programując na poziomie użytkownika Student potrafi projektować i implementować oprogramowanie wykorzystujące mechanizmy systemowe - - + - - - - - - - - - - + - - - - - - - - Treść modułu zajęć (program wykładów i pozostałych zajęć) Wykład 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. Architektura jądra systemu Windows. (2 godz.) 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 godz.). 4. Algorytmy planowania przydziału procesora. (2 godz.) 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 (2 godz.). 7. Pamięć jako zasób banalny, organizacja pamięci w trakcie rozwoju systemów operacyjnych, podział pamięci na strony, podsystem systemu operacyjnego do zarządzania stronami, podstawowe zadania systemu. (2 godz.) 8. Operacje podsystemu zarządzania stronami, wywłaszczanie stron, algorytmy wyboru stron, zalety i wady stronicowania pamięci. Koncepcja segmentacji, cel i sposoby realizacji. (2 godz.) 9. System zarządzania segmentami, sposoby przydzielania segmentów, fragmentacja pamięci, problemy scalania segmentów, sposoby realizacji. Współpraca pamięci stronicowanej i pamięci segmentowanej. (2 godz.) 10. Wykorzystanie segmentów w czasie wykonywania programów przez system operacyjny. Postacie programu w czasie przetwarzania przez kompilator/asembler, program łączący, program ładujący, moduły programów (2 godz.). 11. Postać modułów, program łączący, proces łączenia statycznego, program ładujący, proces ładowania programu do pamięci, segment programu. (2 godz.). 12. Modularna postać programu w pamięci, problem łączenia dynamicznego, obiekty wewnętrzne, remanentne, zewnętrzne, sposoby łączenia dynamicznego (2 godziny). 13. Łączenie dynamiczne, środowisko segmentów wykonywania procesu, przykłady 4 / 6
dołączania modułów w czasie wykonywania, postać modułu object przy łączeniu dynamicznym. (1 godz.) 14. System plików. Budowa plików i katalogów. Przydział miejsca na dysku. (1 godz.) 15. Zarządzanie wejściem-wyjściem. Sterowniki urządzeń. (2 godz.) Ćwiczenia laboratoryjne 1. Podstawowe używane narzędzia programistyczne, kompilacja i śledzenie działania programu ( g++/gcc, make i gdb) 2. Zarządzanie pamięcią. Biblioteki statyczne i dynamiczne. Przydatne funkcje. Pomiar czasu 3. Operacje na plikach i katalogach 4. Tworzenie procesów. Środowisko procesu. Sterowanie procesami. 5. Komunikacja międzyprocesowa: sygnały 6. Kolokwium I. Przydział tematów miniprojeków i dyskusja ich zakresów. 7. Komunikacja międzyprocesowa: Potoki nazwane i nienazwane 8. Komunikacja międzyprocesowa: Kolejki komunikatów (IPC & Posix) 9. Komunikacja międzyprocesowa: Semafory i pamięć wspólna (IPC & Posix) 10. Podstawy obsługi wątków interfejs programistyczny 11. Synchronizacja w aplikacjach wielowątkowych 12. Komunikacja międzyprocesowa: Sokety 13. Kolokwium II Dyskusja tematów mini projektów 14. Prezentacje miniprojektów Sposób obliczania oceny końcowej 1. Aby uzyskać pozytywną ocenę końcową niezbędne jest uzyskanie pozytywnej oceny z laboratorium (kolokwium) oraz zaliczenia testu (egzamin) z części wykładowej. 2. Obliczamy średnią arytmetyczną (sr) z ocen z zaliczenia laboratorium i wykładów, 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 Wymagania wstępne i dodatkowe Umiejetność programowania w jezyku C++ w dowolnym systemie. Zalecana literatura i pomoce naukowe 1.. Silberschatz, P.B. Galvin, G. Gagne. Operating System Concepts. Eighth Edition, John Wiley & Sons Inc, 2009 2.. William Stallings, Operating Systems. Internals and Design Principles. Sixth Edition, Pearson Prentice Hall, 2009 3.. W. Richard Stevens, Stephen A. Rago, Advanced programming in the Unix Environment, Second Edition, Addison Wesley Publishing Company, 2005 4.. Mark Mitchell, Jeffrey Oldham, Alex Samuel, Linux. Programowanie dla zaawansowanych, Wydawnictwo ReadMe, 2002 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 5 / 6
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 Nakład pracy studenta (bilans punktów ECTS) Forma aktywności studenta Udział w wykładach Samodzielne studiowanie tematyki zajęć Udział w zajęciach praktycznych Przygotowanie sprawozdania, pracy pisemnej, prezentacji, itp. Sumaryczne obciążenie pracą studenta Punkty ECTS za moduł Obciążenie studenta 28 godz 30 godz 30 godz 60 godz 148 godz 5 ECTS 6 / 6