Systemy operacyjne
Forma kursu:Opis kursu:
Kurs przedstawia rolę i zasadę działania systemów operacyjnych. Omawiane są podstawowe zadania systemu: szeregowanie procesów, zarządzanie pamięcią i wejściem-wyjściem. Przedstawione są również zagadnienia implementacyjne (w tym konstrukcja systemu plików) oraz podstawy przetwarzania współbieżnego. Praktyczna część kursu obejmuje korzystanie z systemu UNIX/Linux, zarówno na poziomie powłoki, jak i na poziomie programisty systemowego.
Treści programowe:
- Wstęp
- rola i zasada działania systemu operacyjnego
- klasyfikacja systemów
- pojęcie procesu, wątku i zasobu
- struktura systemu, jądro
- Szeregowanie procesów
- algorytmy planowania
- wywłaszczanie
- procesy intensywne obliczeniowo i ograniczone wejściem-wyjściem
- implementacja w systemach UNIX, Linux i Windows
- Zarządzanie pamięcią
- przydział
- stronicowanie
- segmentacja
- fragmentacja
- pamięć wirtualna
- algorytmy wymiany
- Zarządzanie wejściem-wyjściem
- klasyfikacja urządzeń
- sposób współpracy z systemem
- buforowanie, spooling
- wirtualne wejście-wyjście
- System plików
- organizacja logiczna, pliki i ich typy, katalogi, metody dostępu
- organizacja fizyczna, przydział bloków, zarządzanie wolną przestrzenią
- przechowywanie podręczne
- synchronizacja dostępu współbieżnego
- przykłady implementacji
- Przetwarzanie współbieżne
- istota synchronizacji procesów, komunikacja
- pojęcie instrukcji atomowej i przeplotu
- poprawność programów współbieżnych
- błędy uwarunkowane czasowo
- wzajemne wykluczanie, algorytmy Petersona i Lamporta, instrukcje test-and-set i exchange
- mechanizmy synchronizacji: semafory, monitory, rejony krytyczne, spotkania, inne mechanizmy standardu POSIX
- zakleszczenie, istota i przeciwdziałanie
- Korzystanie z systemu UNIX/Linux
- powłoki
- skrypty
- programowanie systemowe, API jądra
Literatura:
- A. Silberschatz, P. Galvin, G. Gagne: Podstawy systemów operacyjnych, WNT 2006.
- A.S. Tanenbaum: Strukturalna organizacja systemów komputerowych, Helion 2006.
- M. Rochkind: Programowanie w systemie UNIX dla zaawansowanych, WNT 2007.
- M. Ben-Ari: Podstawy programowania współbieżnego i rozproszonego, WNT 1996.