Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie systemowe
Tok studiów:
2014/2015
Kod:
IIN-1-684-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka
Semestr:
6
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Osoba odpowiedzialna:
Koźlak Jarosław (kozlak@agh.edu.pl)
Osoby prowadzące:
Koźlak Jarosław (kozlak@agh.edu.pl)
Śnieżyński Bartłomiej (Bartlomiej.Sniezynski@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 Zna i rozumie architekturę systemu operacyjnego Linux, systemu Windows, wybranych wersji innych systemów Uniksowych IN1A_W13 Sprawozdanie
M_W002 Zna i rozumie budowę i zasady działania podstawowych mechanizmów systemowych stosowanych w systemie Linux, Windows i wybranych wersjach innych systemów Uniksowych IN1A_W08 Sprawozdanie
M_W003 Zna i rozumie specyfikę tworzenia kodu procedur systemowych wykonywanych w trybie uprzywilejowanym IN1A_W08 Sprawozdanie
M_W004 Potrafi opracować dokumentację dotyczącą realizacji zadania obejmującego wytwarzanie kodu działającego w trybie uprzywilejowanym. IN1A_U03 Projekt
Umiejętności
M_U001 Potrafi tworzyć oprogramowanie będące ładowalnymi dynamicznie modułami jądra systemu operacyjnego a także, w pewnym zakresie, modyfikować i rekompilować kod jądra w celu uzyskania pożądanych zmian funkcjonalności systemu IN1A_W09 Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
M_U002 Potrafi przygotować i przedstawić prezentację poświęconą wynikom realizacji zadana dotyczącego rozszerzania lub modyfikacji mechanizmów jądra systemu operacyjnego IN1A_U04 Wykonanie projektu
Kompetencje społeczne
M_K001 Potrafi określić w podstawowym zakresie stopień trudności oraz realizowalność zadań obejmujących rozszerzanie lub modyfikację mechanizmów jądra systemu operacyjnego oraz zaplanować odpowiednio pracę zespołu. IN1A_K04 Udział w dyskusji,
Wykonanie projektu
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 Zna i rozumie architekturę systemu operacyjnego Linux, systemu Windows, wybranych wersji innych systemów Uniksowych + - - - - - - - - - -
M_W002 Zna i rozumie budowę i zasady działania podstawowych mechanizmów systemowych stosowanych w systemie Linux, Windows i wybranych wersjach innych systemów Uniksowych + - - - - - - - - - -
M_W003 Zna i rozumie specyfikę tworzenia kodu procedur systemowych wykonywanych w trybie uprzywilejowanym + - - - - - - - - - -
M_W004 Potrafi opracować dokumentację dotyczącą realizacji zadania obejmującego wytwarzanie kodu działającego w trybie uprzywilejowanym. - - - - - - - - - - -
Umiejętności
M_U001 Potrafi tworzyć oprogramowanie będące ładowalnymi dynamicznie modułami jądra systemu operacyjnego a także, w pewnym zakresie, modyfikować i rekompilować kod jądra w celu uzyskania pożądanych zmian funkcjonalności systemu - - + - - - - - - - -
M_U002 Potrafi przygotować i przedstawić prezentację poświęconą wynikom realizacji zadana dotyczącego rozszerzania lub modyfikacji mechanizmów jądra systemu operacyjnego - - + - - - - - - - -
Kompetencje społeczne
M_K001 Potrafi określić w podstawowym zakresie stopień trudności oraz realizowalność zadań obejmujących rozszerzanie lub modyfikację mechanizmów jądra systemu operacyjnego oraz zaplanować odpowiednio pracę zespołu. - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:

  1. Charakterystyka systemów Unix, Linux i Windows i ich architektur (4 godziny)
  2. Specyfika programowania na poziomie jądra na przykładzie systemu Linux (1 godzina)
  3. Podstawowe struktury systemowe w systemach operacyjnych Unix, Linux i Windows (2 godziny)
  4. Algorytmy szeregowania procesów i wątków w różnych systemach operacyjnych (2 godziny)
  5. Wątki. Wątki poziomu użytkownika, wątki jądra i procesy lekkie. Modele obsługi wątków i ich realizacje w systemach Solaris, Linux i Windows. Interfejs obsługi wątków. Biblioteki obsługi wątków w systemach Solaris i Linux. (2 godziny)
  6. Synchronizacja. Obiekty synchronizacyjne w Windows: sekcje krytyczne, zdarzenia, czasomierze, semafory, muteksy. Rodzina funkcji wait (2 godziny).
  7. Popularne systemy plików. Budowa, własności, obsługa (1 godzina).
  8. Budowa i obsługa urządzeń wejścia/wyjścia w systemach Linux i Windows (1 godzina)

Ćwiczenia laboratoryjne:

W ramach zajęć laboratoryjnych wykonuje się ćwiczenia dotyczące zastosowania mechanizmów systemowych, często na poziomie jądra oraz realizuje większy projekt umożliwiający praktyczne zastosowanie nabytej wiedzy. Ćwiczenia laboratoryjne są prowadzone w oparciu o system operacyjny Linux.
Organizacja laboratorium
1. Synchronizacja w Linuxie
2. Tworzenie modułów ładowalnych do jądra Linuxa. Podstawy obsługi urządzeń
Rozdanie tematów projektów (realizowanych zazwyczaj w zespołach 2-osobowych)
3. Metody “odpluskiwania” jądra Linuxa
4. Dodawanie wywołania systemowego w jądrze Linux
5. Sygnaly.
6. Planista i zarządzanie pamięcią w systemie Linux/ Synchronizacja jądra Linuxa
7. Przerwania i obsługa urządzeń
8. Prezentacje projektów

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 75 godz
Punkty ECTS za moduł 3 ECTS
Udział w wykładach 14 godz
Samodzielne studiowanie tematyki zajęć 32 godz
Udział w ćwiczeniach laboratoryjnych 14 godz
Przygotowanie do zajęć 15 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 oraz kolokwium zaliczeniowego z wykładu.
2. Obliczamy średnią ocen z 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:

Ukończony moduł „Systemy operacyjne”. Znajomość podstawowych zagadnień związanych z systemami operacyjnymi oraz programowania w języku C

Zalecana literatura i pomoce naukowe:
  1. Uresh Vahalia, „Jądro systemu Unix. Nowe horyzonty”, WNT 2001.
  2. Robert Love, „Linux Kernel Development”, Novel Press, Third edition, 2010
  3. Wolfgang Mauerer, Professional Linux Kernel Architecture, Wiley Publishing, Inc, 2008.
  4. Mark E. Russinovich, David A. Solomon, Alex Ionescu, Windows Internals, 6th Edition, part I-II, Microsoft, 2012.
  5. Tarik Soulami, Inside Windows Debugging, Practical Debugging and Tracing Strategies, Microsoft, 2012.
  6. Jeffrey Richter, Programowanie aplikacji dla Microsoft Windows, Wydawnictwo RM, 2002
Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Brak