Zaawansowane systemy operacyjne 1000-2N09ZSO
Wykłady
1. Wprowadzenie: Zadania SO, UNIX i Linux - historia, cechy, budowa, eBPF, podstawowe pojęcia: kontekst wykonania, funkcje systemowe, raporty nt jądra
2. Trochę o sprzęcie (na przykładzie Intela): procesor i pamięć, adresowanie, pamięć podręczna procesora, architektura komputerów
3. Zarządzanie pamięcią i procesami: Inicjowanie pracy jądra, stronicowanie w Linuksie, struktury danych procesu
4. Zarządzanie pamięcią i procesami: Struktury danych procesu, przestrzeń adresowa procesu, fork(), błąd braku strony
5. Zarządzanie pamięcią: Pamięć fizyczna, wypełnianie tablic stron, zarządzanie ramkami, strefy, pamięć wysoka, zarządzanie nieciągłymi obszarami pamięci
6. Zarządzanie pamięcią: System bliźniaków, alokator płytowy
7. Zarządzanie procesami: Synchronizacja na poziomie jądra
8. Zarządzanie plikami: Wirtualny system plików, interfejs, struktury danych
9. Zarządzanie plikami: Wirtualny system plików, montowanie, pamięć podręczna katalogów, i-węzły w pamięci
10. Zarządzanie pamięcią: Podręczna pamięć stron, wymiana stron
11: Zarządzanie pamięcią: THP (Transparent Huge Pages); Zarządzanie plikami: systemy plików ext2, ext3 i ext4
12. Warstwa blokowego wejścia-wyjścia i szeregowanie żądań wejścia-wyjścia
13. Szeregowanie procesów: przestrzeń nazw PID, wprowadzenie do szeregowania procesów w Linuksie, planista O(N), O(1), RSDS
14. Szeregowanie procesów: planista CFS, BFS, MuQSS, Deadline; co nowego w szeregowaniu procesów?
Laboratoria
1. Wirtualizacja i konteneryzacja
2. Instalacja Linuksa na platformie wirtualnej
3. Kompilacja jądra
4. Moduły jądra
5. Odpluskwianie kodu w przestrzeni jądra
6. Programowanie w przestrzeni jądra: obsługa przerwań, synchronizacja, zarządzanie pamięcią, wątki jądra, wywołania systemowe
7. Bezpieczne programowanie jądra z użyciem BPF
8. Podprogramy obsługi urządzeń
9. System plików procfs, sysfs
10. Wykorzystanie jądra systemu Linux w systemie Android
11. Użycie języka Rust w jądrze systemu Linux
Rodzaj przedmiotu
Założenia (lista przedmiotów)
Koordynatorzy przedmiotu
Efekty kształcenia
Wiedza
1. Ma pogłębioną wiedzę z zakresu budowy współczesnych systemów operacyjnych.
2. Ma pogłębioną wiedzę z zakresu budowy najnowszej wersji systemu operacyjnego Linux.
3. Zna algorytmy i struktury danych stosowane przy budowie systemów operacyjnych.
4. Zna zagadnienia programowania współbieżnego.
5. Zna zagadnienia ze styku kompilatorów i systemów operacyjnych.
Umiejętności
1. Posiada umiejętność analizy kodu źródłowego systemu operacyjnego.
2. Posiada umiejętność krytycznej analizy rozwiązań z zakresu systemów operacyjnych i programowania współbieżnego.
3. Posiada umiejętność samodzielnego rozwiązywania problemów z zakresu budowy systemów operacyjnych.
4. Ma umiejętności językowe w zakresie informatyki zgodne z wymaganiami określonymi dla poziomu B2+ Europejskiego Systemu Opisu Kształcenia Językowego
5. Potrafi określić kierunki dalszego uczenia się i zrealizować proces samokształcenia.
Kompetencje
1. Zna ograniczenia własnej wiedzy i rozumie potrzebę dalszego kształcenia.
2. Potrafi precyzyjnie formułować pytania, służące pogłębieniu własnego zrozumienia danego tematu lub odnalezieniu brakujących elementów rozumowania.
3. Potrafi formułować opinie na temat podstawowych zagadnień informatycznych.
Kryteria oceniania
Aktywne uczestnictwo w wykładzie i zajęciach laboratoryjnych, zadania programistyczne w ramach laboratorium
Literatura
1. lwn.net - Linux weekly news
2. R. Love, Linux Kernel Development, Addison-Wesley, 2010 (trzecie wydanie)
3. W. Mauerer, Professional Linux Kernel Architecture, Wiley Inc., 2008 (pierwsze wydanie)
4. D.P. Bovet, M. Cesati, Linux Kernel, O'Reilly, 2005 (trzecie wydanie)
5. A. Rubini, J. Corbet, Linux Device Drivers, O'Reilly, 2005 (trzecie wydanie)
6. R. Love, Linux System Programming: Talking Directly to the Kernel and C Library, O'Reilly, 2007 (pierwsze wydanie)
Więcej informacji
Więcej informacji o poziomie przedmiotu, roku studiów (i/lub semestrze) w którym się odbywa, o rodzaju i liczbie godzin zajęć - szukaj w planach studiów odpowiednich programów. Ten przedmiot jest związany z programami:
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: