Systemy operacyjne



Opis



Celem zajęć jest przedstawienie roli i zadań systemu operacyjnego w oprogramowaniu komputera oraz omówienie zagadnień realizacji — algorytmów, struktur danych i ich implementacji. Prezentowane są techniki zarządzania podstawowymi zasobami sprzętowymi komputera — procesorem, pamięcią operacyjną oraz wirtualną i urządzeniami wejścia-wyjścia — oraz ich wpływ na efektywność funkcjonowania systemu jako całości. W kontekście zarządzania zasobami wprowadzana jest również koncepcja procesu oraz wątku. Następnie omawiana jest koncepcja pliku oraz realizacja systemu plików — warstwy logicznej i fizycznej — wraz z przykładami konkretnych implementacji (CP/M, FAT-12/16/32, ISO 9660, Unix, NTFS). Osobnym zagadnieniem, integralnie związanym z realizacją systemu operacyjnego, jest współbieżność i synchronizacja w znaczeniu koordynacji przepływu sterowania. W kontekście podstawowych problemów synchronizacji, takich jak wzajemne wykluczanie oraz ograniczone buforowanie, omawiane są podejścia do synchronizacji procesów, bazujące na współdzielonych zmiennych, podejścia wspierane przez system operacyjny — semafory, oraz podejścia wymagające wsparcia w konstrukcjach programowych języków wysokopoziomowych — monitory, regiony krytyczne i spotkania (ang. rendezvous). Następnie realizowane są zadania polegające na zastosowaniu omawianych mechanizmów do rozwiązania klasycznych problemów synchronizacji (problem producenta-konsumenta, czytelników i pisarzy, pięciu filozofów, śpiących fryzjerów itp.). Omawiany jest również problem wynikający z dostępu współbieżnych procesów do zasobów — zakleszczenie oraz podejścia do rozwiązywania tego problemu.


Sylabus


Autorzy


Wymagania wstępne



Zawartość

Wykład

Przykłady zastosowania wymienionych mechanizmów pokazano w rozwiązaniach klasycznych problemów synchronizacji: producenta i konsumenta, czytelników i pisarzy, pięciu filozofów, śpiących fryzjerów.



Laboratoria


Funkcjonowanie omawianych mechanizmów ilustrowane jest krótkimi przykładami programów. Niektóre z nich mają charakter praktyczny, inne mają tylko demonstrować sposób i skutki użycia określonej funkcji lub mechanizmu.



Literatura


Literatura podstawowa


  1. A. Silberschatz, J.L. Peterson, G. Gagne, Podstawy systemów operacyjnych. WNT, Warszawa 2005.
  2. G. Nutt, Operating Systems. A Modern Perspective. wydanie 2, Addison Wesley Longman, Inc., 2002.
  3. W. Stallings, Systemy operacyjne. Robomatic, Wrocław 2004.
  4. A. S. Tanenbaum, Modern Operating Systems. wydanie 2, Prentice-Hall Inc., 2001.
  5. C. Sobaniec, System operacyjny Linux — przewodnik użytkownika. Nakom, Poznań 2002.
  6. J. Marczyński, UNIX użytkowanie i administrowanie. wydanie 2, Helion, Gliwice 2000.
  7. W. R. Stevens, Programowania w środowisku systemu UNIX. WNT, Warszawa 2002.
  8. J. S. Gray, Komunikacja między procesami w Unixie. ReadMe, Warszawa 1998.
  9. M. J. Rochkind, Programowanie w systemie Unix dla zaawansowanych. WNT, Warszawa 1993.

Literatura uzupełniająca

  1. L. Bic, A. C. Shaw, The Logical Design of Operating Systems. Prentice-Hall Inc., 1988.
  2. M. J. Bach, Budowa systemu operacyjnego Unix®. WNT, Warszawa 1995.
  3. B. Goodheart, J. Cox, Sekrety magicznego ogrodu. UNIX® System V Wersja 4 od środka. WNT, Warszawa 2001.
  4. U. Vahalia, Jądro systemu UNIX®. Nowe horyzonty. WNT, Warszawa 2001.
  5. D. A. Solomon, M. E. Russinovich, Microsoft Windows® 2000 od środka. Helion, Gliwice 2003.
  6. R. Lowe, Kernel Linux. Przewodnik programisty. Helion, Gliwice 2004.
  7. P. Silvester, System operacyjny Unix™. WNT, Warszawa 1990.
  8. Z. Królikowski, M. Sajkowski, UNIX dla początkujących i zaawansowanych. Nakom, Poznań 1996.
  9. Z. Guźlewski, T. Weiss. Programowanie współbieżne i rozproszone w przykładach i zadaniach. WNT, Warszawa 1993.
  10. R. W. Stevens, Programowanie zastosowań sieciowych w systemie Unix. WNT, Warszawa 1995.
  11. M. Gabassi, B. Dupouy, Przetwarzanie rozproszone w systemie Unix. Lupus, Warszawa 1995.


Moduły


Wykłady

  1. Wstęp (2 godz.)
  2. Procesy, zasoby i wątki (2 godz.)
  3. Planowanie przydziału procesora (2 godz.)
  4. Przykłady implementacji planowania przydziału procesora (2 godz.)
  5. Zarządzanie pamięcią operacyjną (2 godz.)
  6. Pamięć wirtualna (3 godz.)
  7. Urządzenia wejścia-wyjścia (2 godz.)
  8. System plików — warstwa logiczna (2 godz.)
  9. System plików — warstwa fizyczna (2 godz.)
  10. System plików — przykłady implementacji (2 godz.)
  11. Współbieżność i synchronizacja procesów (2 godz.)
  12. Systemowe mechanizmy synchronizacji procesów (3 godz.)
  13. Problem zakleszczenia (2 godz.)
  14. Przeciwdziałanie zakleszczeniu (2 godz.)