Wydział Informatyki - Informatyka (S1)
Sylabus przedmiotu Systemy operacyjne II:
Informacje podstawowe
Kierunek studiów | Informatyka | ||
---|---|---|---|
Forma studiów | studia stacjonarne | Poziom | pierwszego stopnia |
Tytuł zawodowy absolwenta | inżynier | ||
Obszary studiów | nauk technicznych, studiów inżynierskich | ||
Profil | ogólnoakademicki | ||
Moduł | — | ||
Przedmiot | Systemy operacyjne II | ||
Specjalność | przedmiot wspólny | ||
Jednostka prowadząca | Katedra Inżynierii Oprogramowania | ||
Nauczyciel odpowiedzialny | Witold Maćków <Witold.Mackow@zut.edu.pl> | ||
Inni nauczyciele | |||
ECTS (planowane) | 3,0 | ECTS (formy) | 3,0 |
Forma zaliczenia | egzamin | Język | polski |
Blok obieralny | — | Grupa obieralna | — |
Formy dydaktyczne
Wymagania wstępne
KOD | Wymaganie wstępne |
---|---|
W-1 | podstawowe umiejętności programowania w języku C (ukończony kurs Podstawy programowania) |
W-2 | znajomość ogólnej architektury i podstawowych mechanizmów systemu operacyjnego (ukończony kurs Systemy operacyjne I) |
Cele przedmiotu
KOD | Cel modułu/przedmiotu |
---|---|
C-1 | zapoznanie studentów z wybranymi elementami składowymi architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux |
C-2 | zapoznanie studentów z podstawowymi mechanizmami udostępnianymi przez system operacyjny (biblioteki systemowe związane z wywołaniami systemowymi - programowanie systemowe). |
C-3 | ukształtowanie umiejętności z zakresu tworzenia elementów rozszerzających funkcjonalność jądra współczesnego systemu operacyjnego na przykładzie systemu Linux (LKM, sterowniki urządzeń). |
Treści programowe z podziałem na formy zajęć
KOD | Treść programowa | Godziny |
---|---|---|
laboratoria | ||
T-L-1 | Podstawy programowania w systemie Linux (gcc, GNU make, gdb) | 2 |
T-L-2 | Podstawy programowania w systemie Linux (biblioteki statyczne i dynamiczne) | 2 |
T-L-3 | Zarządzanie procesami cz.1 (fork, wait, waitpid, getpid, getppid). | 2 |
T-L-4 | Obsługa sygnałów (kill, sigprocmask, sigaction). | 2 |
T-L-5 | Obsługa systemu plików (opendir, closedir, readdir, rewinddir, ftw, stat). | 2 |
T-L-6 | Zarządzanie procesami cz.2 (fork, exec). | 2 |
T-L-7 | Programowanie wątków z wykorzystaniem bibliotek pthread. | 2 |
T-L-8 | Komunikacja międzyprocesowa z wykorzystaniem kolejek FIFO. | 2 |
T-L-9 | Komunikacja międzyprocesowa z wykorzystaniem kolejek komunikatów. | 2 |
T-L-10 | Komunikacja międzyprocesowa z wykorzystaniem pamięci współdzielonej. | 2 |
T-L-11 | Komunikacja międzyprocesowa z wykorzystaniem gniazd. | 2 |
T-L-12 | Analiza struktury systemu plików EXT2. | 2 |
T-L-13 | Programowanie ładowalnych modułów jądra LKM. | 2 |
T-L-14 | Sterowniki urządzeń znakowych. | 4 |
30 | ||
wykłady | ||
T-W-1 | Podstawy programowania w systemie operacyjnym (gcc, GNU make, gdb, biblioteki statyczne i dynamiczne) | 2 |
T-W-2 | Podstawy programowania systemowego (procesy i mechanizmy IPC, sygnały, wątki poziomu jądra, pliki i katalogi, potoki). | 4 |
T-W-3 | Architektura jądra Linux. Zarządzanie pamięcią i procesami. | 3 |
T-W-4 | Architektura jądra Linux. Wirtualny system plików VFS. | 1 |
T-W-5 | Budowa systemu plików z rodziny EXT. | 2 |
T-W-6 | Architektura jądra Linux. Ładowalne moduły jadra LKM. | 1 |
T-W-7 | Architektura jądra Linux. Urządzenia i sterowniki. | 2 |
15 |
Obciążenie pracą studenta - formy aktywności
KOD | Forma aktywności | Godziny |
---|---|---|
laboratoria | ||
A-L-1 | Udział w zajęciach laboratoryjnych | 30 |
A-L-2 | Przygotowanie do zajęć laboratoryjnych | 28 |
A-L-3 | Udział w konsultajach i zaliczeniu formy zajęć | 3 |
61 | ||
wykłady | ||
A-W-1 | Udział w wykładzie | 15 |
A-W-2 | Przygotowanie do egzaminu i udział w egzaminie (2 godz.) | 13 |
A-W-3 | Udział w konsultacjach | 2 |
30 |
Metody nauczania / narzędzia dydaktyczne
KOD | Metoda nauczania / narzędzie dydaktyczne |
---|---|
M-1 | wykład informacyjny |
M-2 | ćwiczenia laboratoryjne |
Sposoby oceny
KOD | Sposób oceny |
---|---|
S-1 | Ocena formująca: wejściówka (ocena przygotowania do zajęć) |
S-2 | Ocena formująca: ocena wykonywanego zadania programistycznego (ocena pracy wykonywanej na zajęciach) |
S-3 | Ocena podsumowująca: testowy egzamin pisemny (student może korzystać z dowolnych materiałów dydaktycznych) |
S-4 | Ocena podsumowująca: semestralne sprawozdanie dotyczące używanych podczas rozwiązywania zadań programistycznych środowisk, bibliotek i narzędzi |
Zamierzone efekty kształcenia - wiedza
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_C/08_W01 potrafi zidentyfikować i wytłumaczyć działanie elementów składowych bibliotek pozwalających na użycie wybranych mechanizmów systemu operacyjnego Linux | I_1A_W06 | T1A_W03, T1A_W05, T1A_W06, T1A_W07, T1A_W09 | InzA_W01, InzA_W02, InzA_W04, InzA_W05 | C-2 | T-W-1, T-W-2, T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-L-11, T-L-13, T-L-14 | M-1, M-2 | S-1, S-3 |
I_1A_C/08_W02 potrafi zidentyfikować i wytłumaczyć działanie wybranych elementów składowych architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux | I_1A_W04 | T1A_W04, T1A_W07 | InzA_W02 | C-1, C-3 | T-W-3, T-W-4, T-W-5, T-W-6, T-W-7, T-L-12 | M-1, M-2 | S-1, S-3 |
Zamierzone efekty kształcenia - umiejętności
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_C/08_U01 potrafi napisać poprawny kod w języku C przy użyciu niskopoziomowych funkcji systemu Linux, który wykorzystuje wybrane mechanizmy systemu operacyjnego i/lub rozszerza funkcjonalność systemu (moduły ładowalne) | I_1A_U01 | T1A_U01, T1A_U02, T1A_U04, T1A_U07, T1A_U08, T1A_U09, T1A_U14, T1A_U15, T1A_U16 | InzA_U01, InzA_U02, InzA_U06, InzA_U07, InzA_U08 | C-1, C-2, C-3 | T-W-1, T-W-2, T-W-6, T-W-7, T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-L-11, T-L-13, T-L-14 | M-1, M-2 | S-1, S-2, S-3 |
I_1A_C/08_U02 potrafi w sposób efektywny wykorzystać do rozwiazywania zadań programistycznych dokumentację opisującą działanie wybranych elementów systemu operacyjnego Linux na poziomie jądra, odwołań systemowych i funkcji bibliotecznych | I_1A_U05 | T1A_U01, T1A_U02, T1A_U06, T1A_U07, T1A_U13 | InzA_U05 | C-2, C-3 | T-W-1, T-W-2, T-W-6, T-W-7, T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-L-11, T-L-13, T-L-14 | M-1, M-2 | S-2 |
I_1A_C/08_U03 potrafi skonfigurować środowisko programistyczne i posłużyć się dostępnymi narzędziami programistycznymi (kompilator, makefile, debuger, programy kontrolujące zarządzanie pamięcią i wykonujące analizę statyczną kodu) w celu efektywnego rozwiązania zadań programistycznych | I_1A_U06 | T1A_U01, T1A_U14, T1A_U15, T1A_U16 | InzA_U06, InzA_U07, InzA_U08 | C-2, C-3 | T-W-1, T-L-1, T-L-2 | M-1, M-2 | S-2, S-3 |
Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_C/08_K01 ma świadomość korzyści wynikających z udostępniania wyników własnej pracy oraz korzystania z wyników pracy innych osób zgodnie z koncepcjami wolnego i/lub otwartego oprogramowania | I_1A_K01 | T1A_K01, T1A_K07 | — | C-2, C-3 | T-W-1, T-L-1, T-L-2 | M-1, M-2 | S-4 |
Kryterium oceny - wiedza
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_C/08_W01 potrafi zidentyfikować i wytłumaczyć działanie elementów składowych bibliotek pozwalających na użycie wybranych mechanizmów systemu operacyjnego Linux | 2,0 | nie spełnia kryteriów określonych dla oceny 3 |
3,0 | potrafi wymienić i wyjaśnić sposób użycia wybranych podstawowych mechanizmów systemowych (procesy, sygnały, system plików, biblioteki statyczne i dynamiczne) | |
3,5 | potrafi wymienić i wyjaśnić sposób użycia większości podstawowych mechanizmów systemowych (wątki, potoki) | |
4,0 | potrafi wymienić i wyjaśnić sposób użycia wybranych mechanizmów komunikacji międzyprocesowej (pamięć współdzielona, semafory, kolejki komunikatów) | |
4,5 | potrafi wymienić i wyjaśnić sposób użycia większości mechanizmów komunikacji międzyprocesowej (gniazda) | |
5,0 | potrafi objaśnić sposób tworzenia i użycia ładowalnego modułu jądra oraz prostego sterownika urządzenia znakowego | |
I_1A_C/08_W02 potrafi zidentyfikować i wytłumaczyć działanie wybranych elementów składowych architektury jądra współczesnego systemu operacyjnego na przykładzie systemu Linux | 2,0 | nie spełnia kryteriów określonych dla oceny 3 |
3,0 | potrafi wymienić wybrane podstawowe elementy składowe architektury jądra systemu Linux i rozumie podstawowe interakcje między nimi | |
3,5 | potrafi wymienić wszystkie podstawowe elementy składowe architektury jądra systemu Linux i rozumie podstawowe interakcje między nimi | |
4,0 | potrafi opisać budowę i działanie modułów jądra systemu Linux odpowiedzialnych za zarządzanie pamięcią i procesami | |
4,5 | potrafi opisać budowę i działanie modułu VFS oraz systemu plików EXT2 (również na poziomie współpracy z VFS) | |
5,0 | potrafi wytłumaczyć budowę oraz działanie prostego sterownika urządzenia znakowego wykorzystującego mechanizm ładowalnego modułu jądra |
Kryterium oceny - umiejętności
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_C/08_U01 potrafi napisać poprawny kod w języku C przy użyciu niskopoziomowych funkcji systemu Linux, który wykorzystuje wybrane mechanizmy systemu operacyjnego i/lub rozszerza funkcjonalność systemu (moduły ładowalne) | 2,0 | nie spełnia kryteriów określonych dla oceny 3 |
3,0 | potrafi efektywnie użyć wybrane podstawe mechanizmy systemowe (biblioteki statyczne i dynamiczne, proecsy, sygnały, zarządzanie systemem plików) | |
3,5 | potrafi efektywnie użyć wybrane podstawe mechanizmy systemowe (wątki, potoki) | |
4,0 | potrafi efektywnie użyć podstawowe mechanizmy komunikacji międzyprocesowej (biblioteka IPC, gniazda) | |
4,5 | potrafi napisać i użyć prosty moduł ładowalny jądra LKM | |
5,0 | potrafi napisać i użyć prosty sterownik urządzenia znakowego | |
I_1A_C/08_U02 potrafi w sposób efektywny wykorzystać do rozwiazywania zadań programistycznych dokumentację opisującą działanie wybranych elementów systemu operacyjnego Linux na poziomie jądra, odwołań systemowych i funkcji bibliotecznych | 2,0 | nie spełnia kryteriów określonych dla oceny 3 |
3,0 | potrafi w stopniu podstawowym posługiwać się dostępną w systemie dokumentacją dotyczącą funkcji systemowych | |
3,5 | potrafi w stopniu zaawansowanym posługiwać sie dostępną w systemie dokumentacją dotyczącą funkcji systemowych | |
4,0 | potrafi instalować i aktualizować dokumentację dostępną w systemie dotczącą funkcji systemowych | |
4,5 | potrafi w stopniu podstawowym wykorzystać dokumentację kodu źródłowego jądra systemu | |
5,0 | potrafi w stopniu zaawansowanym wykorzystać dokumentację kodu źródłowego jądra systemu | |
I_1A_C/08_U03 potrafi skonfigurować środowisko programistyczne i posłużyć się dostępnymi narzędziami programistycznymi (kompilator, makefile, debuger, programy kontrolujące zarządzanie pamięcią i wykonujące analizę statyczną kodu) w celu efektywnego rozwiązania zadań programistycznych | 2,0 | nie spełnia kryteriów określonych dla oceny 3 |
3,0 | potrafi w stopniu podstawowym użyć kompilator gcc oraz debuger gdb | |
3,5 | potrafi w stopniu zaawansowanym użyć kompilator gcc oraz stworzyć prosty plik projektu makefile | |
4,0 | potrafi w stopniu zaawansowanym użyć debugera gdb oraz stworzyć zaawansowany plik projektu makefile | |
4,5 | potrafi użyć wybrany program do analizy statycznej własnego kodu (przykładowo Rats) | |
5,0 | potrafi użyć wybrany program do dynamicznej kontroli pamięci własnego kodu (przykładowo Valgrind) |
Kryterium oceny - inne kompetencje społeczne i personalne
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_C/08_K01 ma świadomość korzyści wynikających z udostępniania wyników własnej pracy oraz korzystania z wyników pracy innych osób zgodnie z koncepcjami wolnego i/lub otwartego oprogramowania | 2,0 | nie spełnia kryteriów określonych dla oceny 3 |
3,0 | ma świadomość istnienia narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania | |
3,5 | potrafi wskazać i korzysta z narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania do rozwiązywania wybranych problemów | |
4,0 | korzysta do rozwiązywania zadań z wiedzy udostępnianej na zasadzie otwartych projektów | |
4,5 | potrafi wskazać i korzysta z narzędzi programistycznych udostępnionych na zasadzie wolnego i/lub otwartego oprogramowania do rozwiązywania dowolnych problemów | |
5,0 | zna metody pozwalające na publikowanie własnej wiedzy i osiągnięć na zasadzie otwartych projektów i wolnego i/lub otwartego oprogramowania |
Literatura podstawowa
- A.Silberschatz, I.Peterson, P.Galvin, Podstawy systemów operacyjnych, WNT, Warszawa, 2008
- D.P. Bovet, M. Ceasti, Linux Kernel, Wydawnictwo RM, Warszawa, 2001
- M.J. Bach, Budowa systemu operacyjnego Unix, WNT, Warszawa, 1995
- W. Richard Stevens, Programowanie w środowisku systemu UNIX, WNT, Warszawa, 2002
Literatura dodatkowa
- A.S.Tanenbaum, Rozproszone systemy operacyjne, WNT, Warszawa, 1997
- U. Vahalia, Jądro systemu UNIX, Nowe horyzonty, WNT, Warszawa, 2001
- M. Beck, H. Bohme, M. Dziadzka, U. Kunitz, R. Magnus, D. Verworner, Linux Kernel. Jądro system, MIKOM, 1999
- A. Rubini, J. Corbet, Linux Device Drivers, 2nd edition, O'Reilly, 2001
- William von Hagen, Systemy plików w Linuksie, Helion, 2003
- W. Richard Stevens, UNIX programowanie usług sieciowych 1. API: gniazda i XTI, WNT, Warszawa, 2000
- W. Richard Stevens, UNIX programowanie usług sieciowych 2. Komunikacja międzyprocesowa, WNT, Warszawa, 2001