Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Systemy operacyjne
Tok studiów:
2014/2015
Kod:
IIN-1-403-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka
Semestr:
4
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
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)
Krótka charakterystyka modułu

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 Student zna i rozumie podstawowe pojęcia klasyfikujące systemy operacyjne, zadania i podstawową architekturę popularnych systemów operacyjnych (Unix i Windows) IN1A_W08 Egzamin
M_W002 Student zna i rozumie budowę i działanie procesów i wątków oraz zarządzanie nimi przez system operacyjny. IN1A_W08 Egzamin
M_W003 Student zna i rozumie rozwiązania podstawowych problemów synchronizacji oraz działanie mechanizmów synchronizacji IN1A_W08 Egzamin,
Kolokwium,
Wykonanie ćwiczeń laboratoryjnych
M_W004 Student zna i rozumie problem zakleszczeń oraz metody zapobiegania i unikania zakleszczeniom IN1A_W08 Egzamin
M_W005 Student zna i rozumie mechanizmy komunikacji międzyprocesowej stosowane w popularnych systemach operacyjnych IN1A_W08 Egzamin,
Kolokwium,
Wykonanie ćwiczeń laboratoryjnych,
Wynik testu zaliczeniowego
M_W006 Student zna i rozumie organizację pamięci komputera (stronicowanie i segmentacja) i sposoby ich realizacji w praktyce IN1A_W08 Egzamin
M_W007 Student zna i rozumie podstawy wykorzystania segmentów do procesu statycznego łączenia modułów, strukturę modułów przemieszczalnych i tworzenie programów w wyniku łączenia modułów. IN1A_W08 Egzamin
M_W008 Student zna i rozumie podstawy wykorzystania segmentów do dynamicznego łączenia modułów, proces łączenia dynamicznego, strukturę wykonywanego przez system operacyjny procesu. IN1A_W08 Egzamin
M_W009 Student zna i rozumie podstawy budowy i działania systemów plików. IN1A_W08 Egzamin
M_W010 Student zna i rozumie podstawy budowy i działania urządzeń wejścia-wyjścia IN1A_W08 Egzamin
M_W011 Student zna możliwości standardowych bibliotek C/C++ w zakresie zadań ćwiczonych podczas laboratorium IN1A_W08 Egzamin,
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, IN1A_W08 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
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 Student zna i rozumie podstawowe pojęcia klasyfikujące systemy operacyjne, zadania i podstawową architekturę popularnych systemów operacyjnych (Unix i Windows) + - + - - - - - - - -
M_W002 Student zna i rozumie budowę i działanie procesów i wątków oraz zarządzanie nimi przez system operacyjny. + - + - - - - - - - -
M_W003 Student zna i rozumie rozwiązania podstawowych problemów synchronizacji oraz działanie mechanizmów synchronizacji + - + - - - - - - - -
M_W004 Student zna i rozumie problem zakleszczeń oraz metody zapobiegania i unikania zakleszczeniom + - - - - - - - - - -
M_W005 Student zna i rozumie mechanizmy komunikacji międzyprocesowej stosowane w popularnych systemach operacyjnych + - + - - - - - - - -
M_W006 Student zna i rozumie organizację pamięci komputera (stronicowanie i segmentacja) i sposoby ich realizacji w praktyce + - - - - - - - - - -
M_W007 Student zna i rozumie 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 Student zna i rozumie podstawy wykorzystania segmentów do dynamicznego łączenia modułów, proces łączenia dynamicznego, strukturę wykonywanego przez system operacyjny procesu. + - - - - - - - - - -
M_W009 Student zna i rozumie podstawy budowy i działania systemów plików. + - - - - - - - - - -
M_W010 Student zna i rozumie 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 + - - - - - - - - - -
M_W012 Student potrafi dobrać i zastosować mechanizmy systemowe i funkcje biblioteczne, do realizacji zadanych problemów + - - - - - - - - - -
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_U013 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 dołączania modułów w czasie wykonywania, postać modułu „object” przy łączeniu dynamicznym. (2 godz.)
14. System plików. Budowa plików i katalogów. Przydział miejsca na dysku. (2 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

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 148 godz
Punkty ECTS za moduł 5 ECTS
Udział w wykładach 28 godz
Samodzielne studiowanie tematyki zajęć 30 godz
Udział w zajęciach praktycznych 30 godz
Przygotowanie sprawozdania, pracy pisemnej, prezentacji, itp. 60 godz
Pozostałe informacje
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:

#. Silberschatz, P.B. Galvin, G. Gagne. „Operating System Concepts. Eighth Edition”, John Wiley & Sons Inc, 2009
#. William Stallings, „Operating Systems. Internals and Design Principles”. Sixth Edition, Pearson Prentice Hall, 2009
#. W. Richard Stevens, Stephen A. Rago, “Advanced programming in the Unix Environment”, Second Edition, Addison Wesley Publishing Company, 2005
#. 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:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Brak